A melhor parceira de TI para o seu negócio English version

Migração

Home Características Cases Livro Curso Downloads Apps Docs Fórum

Conheça mais sobre com o livro:

  • Instalação e configuração;
  • Modelos, persistência e BD;
  • Componentes de apresentação;
  • Cadastros e listagens;
  • Logins, permissões, relatórios;
  • Desenvolvimento com Studio Pro.
Ver detalhes...

5.0.0 4.0.0 3.0.0 2.0.0 1.0.3 1.0.2 1.0.1

Migrando da 4.0.0 para 5.0.0

  • Atualizando o framework: Esta operação irá atualizar as bibliotecas do núcleo do framework e como elas são carregadas:
    • Primeiro, faça um backup completo;
    • Baixe a nova versão do template, ou do framework puro, caso sua aplicação seja baseada nele;
    • Atualização das bibliotecas e do carregamento delas:
      • Exclua a pasta /lib;
      • Copie a pasta /lib da nova versão;
      • Copie a pasta /vendor da nova versão;
      • Copie app/templates/<tema>/libraries.html a partir da nova versão (sobrescreva);
      • Copie /composer.* a partir da nova versão;
    • Atualização do application.ini:
      • Dentro da seção [general], adicione locale = pt_BR;
    • Atualização dos arquivos do diretório raíz:
      • Copie o arquivo cmd.php da nova versão;
      • Copie o arquivo init.php da nova versão;
      • Copie o arquivo download.php da nova versão;
      • Copie o arquivo engine.php da nova versão. Cuide se for necessário preservar customizações;
      • Copie o arquivo index.php da nova versão. Cuide se for necessário preservar customizações;
  • Atualizando as bibliotecas da aplicação: Esta operação irá atualizar bibliotecas extras utilizadas pela aplicação:
    • Remova app/lib/mail/, pois isso passou para a pasta /vendor via composer (a seguir);
    • Remova app/lib/rtf/, pois isso passou para a pasta /vendor via composer (a seguir);
    • Copie app/lib/html/ a partir da nova versão;
    • Copie app/lib/barcode/ a partir da nova versão;
    • Copie app/lib/pdf/ a partir da nova versão (sobrescreva);
    • Copie app/lib/reports/ a partir da nova versão (sobrescreva);
    • Copie app/lib/util/TMail.class.php a partir da nova versão (sobrescreva);
    • Copie app/lib/include/application.js a partir da nova versão (especialmente a parte da select2);
    • Adicione em app/lib/util/ApplicationTranslator.class.php os novos termos a partir daqui;
  • Atualizando aplicações baseadas em Template: Esta operação irá atualizar aplicações baseadas no Template. Neste caso, você deverá baixar o (template) para realizar os comandos a seguir. Esta operação irá atualizar bem como adicionar novos conteúdos como: telas, tabelas, controles, temas (estilos):
    • Copie app/model/admin/ a partir da nova versão (sobrescreva);
    • Copie app/model/communication/ a partir da nova versão (sobrescreva);
    • Copie app/model/log/ a partir da nova versão (sobrescreva);
    • Copie app/control/admin/ a partir da nova versão (sobrescreva);
    • Copie app/control/communication/ a partir da nova versão;
    • Copie app/control/log/ a partir da nova versão (sobrescreva);
    • Copie app/control/MessageList.class.php a partir da nova versão;
    • Copie app/control/NotificationList.class.php a partir da nova versão;
    • Copie app/control/SearchBox.class.php a partir da nova versão;
    • Copie app/control/SearchInputBox.class.php a partir da nova versão;
    • Copie app/lib/menu/AdiantiMenuBuilder.php a partir da nova versão;
    • Copie app/resources/system* e app/resources/google* a partir da nova versão;
    • Copie app/service/System* a partir da nova versão;
    • Copie app/templates/themeX/ a partir da nova versão (sobrescreva);
    • Compare o arquivo menu.xml com o da nova versão:
      Acrescente opções no menu para as classes: SystemPHPErrorLogView e SystemDatabaseExplorer.
    • Atualize a base de dados para criar as novas tabelas e cadastrar os novos programas (Ex: SystemPHPErrorLogView, SystemDatabaseExplorer, etc) para estes aparecerem no menu. Execute os comandos SQL a partir da linha "--- new programs of 5.0.0" do arquivo permission-update.sql. Se necessário, adicione-os aos grupos ou usuários manualmente;
  • Ajustes de compatibilidade: Alguns ajustes serão necessários com a nova versão:
    • A biblioteca JQuery foi atualizada para a série 3. Caso você tenha feito muita programação Javascript é possível que tenha usado um método que não exista mais na versão 3. Nesse caso, será necessário adicionar uma biblioteca de compatibilização, a jquery-migrate:
    • <script src="lib/jquery/jquery-migrate-3.0.0.js" type="text/javascript"></script>
    • Ao utilizar formulários vetoriais manuais (veja neste exemplo), agora é necessário adicionar uma seção "thead" antes do cabeçalho, "tbody" antes das linhas do corpo da tabela, e "tfoot" antes do botão de clonar para funcionar com a nova versão:
    • $table->addSection('thead');
      // ...
      $table->addSection('tbody');
      // ...
      $table->addSection('tfoot');
      // ...
    • A variável de sessão usergroupids agora é um array, não mais uma string separada por vírgulas. Normalmente essa é uma variável de sessão usada internamente, mas eventualmente algum usuário pode ter feito uso dela;
    • Os componentes TMultiSearch e TDBMultiSearch mudaram de comportamento e agora funcionam da mesma maneira que um TSelect/TDBSelect no envio de dados do formulário. Para não quebrar a compatibilidade de aplicações existentes, será necessário acrescentar o seguinte conteúdo no application.ini. Dessa maneira, esses componentes se comportarão como na versão 4, enviando no POST um array cujo índice é a opção escolhida, e a posição contém a descrição. A versão nova envia no POST somente um array simples contendo os índices das opções escolhidas. Essa mudança ocorreu em decorrência da atualização do componente select2 para a última versão. Além disso, o comportamento novo é mais natural, e padronizado com os outros componentes.
    • compat=4
    • É recomendada a substituição de componentes TDBMultiSearch com setMaxSize(1) por TDBUniqueSearch, que é um componente mais fácil de utilizar, uma vez que se comporta como um TDBCombo em salvamentos e edições, recebendo e enviando apenas o índice do elemento selecionado, não um vetor que precisa ser tratado no onEdit() e onSave().
    • Campos TMultiSearch, ou TDBMultiSearch eram postados como strings em saída de campos (onExitAction, onChangeAction), nesse formato ("a::Item a||c::Item c"), sendo que era necessário um explode. Agora será postado sempre como um array padronizado como [a,c], somente com os índices selecionados, dispensando tratamento.
    • Campos TMultiSearch, ou TDBMultiSearch eram postados como strings em posts estáticos (static function onSave), nesse formato ("a::Item a||c::Item c"), sendo que era necessário um explode. Agora será postado sempre como um array padronizado como [a,c], somente com os índices selecionados, dispensando tratamento.
  • Testando a nova versão: Ao testar a nova versão, você precisa tomar alguns cuidados:
    • Limpe o cache do navegador para garantir que os novos JS/CSS sejam lidos, e não os antigos;
    • Após a atualização, certifique-se de que todos arquivos possuam pelo menos permissão de leitura pelo Web Server, sendo que os diretórios tmp, app/database, e app/output devem possuir também permissão de escrita:
      chmod -Rf 755 *
      chown -Rf www-data:www-data *
      chmod -Rf 777 tmp/ app/output app/database


Migrando da 3.0.0 para 4.0.0

  • Atualizando o framework: Esta operação irá atualizar as bibliotecas do núcleo do framework e como elas são carregadas:
    • Primeiro, faça um backup completo;
    • Baixe a nova versão do framework puro, ou do template caso sua aplicação seja baseada nele;
    • Atualização das bibliotecas e do carregamento delas:
      • Exclua a pasta /lib;
      • Copie a pasta /lib da nova versão;
      • Copie app/templates/<tema>/libraries.html a partir da nova versão (sobrescreva);
    • Atualização do application.ini:
      • Mova o arquivo application.ini para a pasta app/config;
      • Adicione a seção [general] na primeira linha no início do arquivo;
      • Dentro da seção [general], adicione seed = "d76bsodg7sdg" (invente um conteúdo aleatório alfanumérico);
      • Dentro da seção [general], adicione theme = theme3 (preencha com o tema que você utiliza);
      • Adicione a seção [permission] no final do arquivo;
      • Dentro da seção [permission], adicione a variável public_classes[] = PublicFormView (Adicione as classes públicas, uma por linha)
      • Veja um exemplo de application.ini:
        [general]
        timezone = America/Sao_Paulo
        language = pt
        application = template
        theme = theme3
        seed = h6d587dfgh5df7h

        [permission]
        ; Public classes, anyone (logged or not) has access
        public_classes[] = PublicForm
        public_classes[] = PublicView
    • Atualização dos arquivos do diretório raíz:
      • Copie o arquivo init.php da nova versão;
      • Copie o arquivo engine.php da nova versão;
      • Copie o arquivo download.php da nova versão;
      • Copie o arquivo index.php da nova versão. Cuide se for necessário preservar customizações;
  • Atualizando as bibliotecas da aplicação: Esta operação irá atualizar bibliotecas extras utilizadas pela aplicação:
    • Copie app/lib/mail/ a partir da nova versão (sobrescreva);
    • Copie app/lib/pdf/ a partir da nova versão (sobrescreva);
    • Copie app/lib/reports/ a partir da nova versão (sobrescreva);
    • Copie app/lib/util/TMail.class.php a partir da nova versão (sobrescreva);
    • Renomeie o arquivo app/lib/util/TApplicationTranslator.class.php para app/lib/util/ApplicationTranslator.class.php;
    • Substitua todas ocorrências de "TApplicationTranslator" para "ApplicationTranslator" globalmente em toda a aplicação;
  • Atualizando aplicações baseadas em Template: Esta operação irá atualizar aplicações baseadas no Template. Neste caso, você deverá baixar o (template) para realizar os comandos a seguir. Esta operação irá atualizar bem como adicionar novos conteúdos como: telas, tabelas, controles, temas (estilos):
    • Crie a pasta files/documents e dê permissão de escrita para upload;
    • Copie app/config/communication.ini a partir da nova versão;
    • Copie app/control/admin/ a partir da nova versão (sobrescreva);
    • Copie app/control/communication/ a partir da nova versão;
    • Copie app/control/log/ a partir da nova versão (sobrescreva);
    • Copie app/control/MessageList.class.php a partir da nova versão;
    • Copie app/control/NotificationList.class.php a partir da nova versão;
    • Copie app/database/communication* a partir da nova versão;
    • Copie app/model/admin/ a partir da nova versão (sobrescreva);
    • Copie app/model/communication/ a partir da nova versão;
    • Copie app/model/log/ a partir da nova versão (sobrescreva);
    • Copie app/resources/* a partir da nova versão;
    • Copie app/service/ a partir da nova versão;
    • Copie app/templates/themeX/ a partir da nova versão (sobrescreva);
    • Compare o arquivo menu.xml com o da nova versão:
      Acrescente opções no menu para as classes: SystemUnitList, SystemPreferenceForm, SystemDocumentUploadForm, SystemDocumentList, SystemSharedDocumentList,SystemDocumentCategoryFormList.
    • Atualize a base de dados para criar as novas tabelas e cadastrar os novos programas (Ex: SystemUnitList, SystemDocumentList, etc) para estes aparecerem no menu. Execute os comandos SQL a partir da linha "--- new programs of 4.0.0" do arquivo permission-update.sql. Se necessário, adicione-os aos grupos ou usuários manualmente;
  • Testando a nova versão: Ao testar a nova versão, você precisa tomar alguns cuidados:
    • Limpe o cache do navegador para garantir que os novos JS/CSS sejam lidos, e não os antigos;
    • Após a atualização, certifique-se de que todos arquivos possuam pelo menos permissão de leitura pelo Web Server, sendo que os diretórios tmp, app/database, e app/output devem possuir também permissão de escrita:
      chmod -Rf 755 *
      chown -Rf www-data:www-data *
      chmod -Rf 777 tmp/ app/output app/database


Migrando da 2.0.0 para 3.0.0

  • Atualizando o framework: Esta operação irá atualizar as bibliotecas do núcleo do framework e como elas são carregadas:
    • Primeiro, faça um backup completo;
    • Baixe a nova versão do framework);
    • Exclua a pasta /lib;
    • Copie a pasta /lib da nova versão;
    • Copie app/templates/theme1/libraries.html a partir da nova versão (sobrescreva);
  • Atualizando as bibliotecas da aplicação: Esta operação irá atualizar bibliotecas extras utilizadas pela aplicação:
    • Copie app/lib/mail/ a partir da nova versão (sobrescreva);
    • Copie app/lib/pdf/ a partir da nova versão (sobrescreva);
    • Copie app/lib/reports/ a partir da nova versão (sobrescreva);
    • Copie app/lib/util/ a partir da nova versão (sobrescreva);
  • Atualizando aplicações baseadas em Template: Esta operação irá atualizar aplicações baseadas no Template. Neste caso, você deverá baixar o (template) para realizar os comandos a seguir. Esta operação irá atualizar bem como adicionar novos conteúdos como: telas, tabelas, controles, temas (estilos):
    • Copie app/config/log.ini a partir da nova versão;
    • Copie app/control/admin/ a partir da nova versão (sobrescreva);
    • Copie app/control/log/ a partir da nova versão;
    • Copie app/control/MessageList.class.php a partir da nova versão (só para o Template II);
    • Copie app/control/SearchBox.class.php a partir da nova versão;
    • Copie app/control/WelcomeView.class.php a partir da nova versão;
    • Copie app/database/log* a partir da nova versão;
    • Copie app/model/admin/ a partir da nova versão (sobrescreva);
    • Copie app/model/log/ a partir da nova versão;
    • Copie app/resources/profile.html a partir da nova versão;
    • Copie app/resources/styles.html a partir da nova versão (sobrescreva);
    • Copie app/templates/themeX/ a partir da nova versão (sobrescreva);
    • Compare o arquivo engine.php com o da nova versão:
      Adicione ('MessageList'=>TRUE, 'SearchBox' => TRUE) ao vetor de programas;
    • Compare o arquivo index.php com o da nova versão:
      Adicione ($content = str_replace('{query_string}', $_SERVER["QUERY_STRING"], $content););
    • Compare o arquivo menu.xml com o da nova versão:
      Acrescente opções no menu para as classes: SystemSQLPanel, SystemPHPInfoView, SystemAccessLogList, SystemChangeLogView, SystemSqlLogList.
    • É importante cadastrar os novos programas (Ex: SystemSQLPanel, SystemPHPInfoView, SystemAccessLogList, SystemChangeLogView, e SystemSqlLogList) para estes aparecerem no menu. Execute os comandos SQL a partir da linha "--- new programs of 3.0.0" do arquivo permission.sqlite.sql ou permission.pgsql.sql. Se necessário, adicione-os aos grupos ou usuários manualmente;
  • Usando os ícones novos: Você poderá usar os ícones novos (da Font Awesome) no lugar dos antigos (que eram em formato de imagem). Os seguintes comandos efetuam uma substituicao global (em Linux):
    sudo apt-get install rpl
    cd <diretorio>/app
    rpl -R "ico_save.png" "fa:floppy-o" *
    rpl -R "ico_new.png" "fa:plus-square green" *
    rpl -R "ico_datagrid.png" "fa:table blue" *
    rpl -R "ico_find.png" "fa:search" *
    rpl -R "ico_edit.png" "fa:pencil-square-o blue fa-lg" *
    rpl -R "ico_delete.png" "fa:trash-o red fa-lg" *
    rpl -R "ico_apply.png" "fa:check-circle-o green" *
    rpl -R "ico_view.png" "fa:search" *
  • Testando a nova versão: Ao testar a nova versão, você precisa tomar alguns cuidados:
    • Limpe o cache do navegador para garantir que os novos JS/CSS sejam lidos, e não os antigos;
    • Após a atualização, certifique-se de que todos arquivos possuam pelo menos permissão de leitura pelo Web Server, sendo que os diretórios tmp, app/database, e app/output devem possuir também permissão de escrita;


Migrando da 1.0.3 para 2.0.0

  • Atualizando o framework
    • Primeiro, faça um backup de sua aplicação;
    • Baixe a nova versão do framework (2.0);
    • Exclua a pasta /lib;
    • Copie a pasta /lib da versão 2.0.0;
  • Atualizando a aplicação
    • Criar um arquivo vazio app/lib/include/application.js;
    • Copiar o /init.php da versão 2.0.0 para sua aplicação;
    • Copiar o /cmd.php da versão 2.0.0 para sua aplicação;
    • Copiar o /download.php da versão 2.0.0 para sua aplicação;
    • Copiar o /app/templates/theme1/libraries.html da versão 2.0.0 para sua aplicação.
      Lembre de manter os includes de suas bibliotecas específicas, caso existam;
    • Excluir o /app/lib/include/facade.js de sua aplicação.
      Caso ele tenha funções do usuário, transferidas estas para /app/lib/include/application.js;
    • Excluir o /index.php de sua aplicação;
    • Renomear o index.web.php para index.php no caso de uma aplicação web;
    • Renomear /app/templates/theme1/site.css para app/templates/theme1/application.css;
    • Substituir no arquivo engine.php: "TCoreApplication" por "AdiantiCoreApplication";
    • Se sua aplicação for baseada no Template ERP, você pode baixar o novo Template ERP e copiar os arquivos engine.php e index.php a partir do novo template;
    • Se sua aplicação não for baseada no Template ERP, substitua nos arquivos engine.php e index.php, as seguintes instruções iniciais:
      // define the autoloader
      include_once 'lib/adianti/util/TAdiantiLoader.class.php';
      spl_autoload_register(array('TAdiantiLoader', 'autoload_web'));

      // read configurations
      $ini = parse_ini_file('application.ini');
      date_default_timezone_set($ini['timezone']);
      TAdiantiCoreTranslator::setLanguage( $ini['language'] );
      TApplicationTranslator::setLanguage( $ini['language'] );

      // define constants
      define('APPLICATION_NAME', $ini['application']);
      define('OS', strtoupper(substr(PHP_OS, 0, 3)));
      define('PATH', dirname(__FILE__));
      pelo seguinte conteúdo:
      require_once 'init.php';
    • Remover de todos arquivos de layout (ex: app/templates/theme1/layout.html), as instruções a seguir, pois aquelas que eram essenciais foram transferidas para o núcleo do framework em /lib/adianti/include/adianti.js:
      $('[generator="adianti"]').live('click', function()
      {
         __adianti_load_page($(this).attr('href'));
         return false;
      });

      window.onpopstate = function(stackstate)
      {
         if (stackstate.state)
         {
            __adianti_load_page_no_register(stackstate.state.url);
         }
      };

      $(function() {
         $( document ).tooltip();
      });
    • Como a Bootstrap foi atualizada da 2 para a 3, leia a sua documentação de migração caso tenha usado alguma classe específica;
    • Como a jQuery foi atualizada da 1 para a 2, leia a documentação de migração caso tenha usado algum método específico;
    • Algumas funções Javascript internas foram renomeadas (ajaxLookup => __adianti_ajax_lookup) e (ajaxExec => __adianti_ajax_exec). Caso você tenha as chamado diretamente, substitua as chamadas;
    • Ao carregar a aplicação pela primeira vez após a atualização, limpe totalmente o cache do navegador, para que o mesmo não leia estilos CSS ou arquivos JS da versão anterior;
    • Após a atualização, certifique-se de que todos arquivos possuam pelo menos permissão de leitura pelo Web Server, sendo que os diretórios /tmp, /app/database, e /app/output devem possuir também permissão de escrita;


Migrando da 1.0.2 para 1.0.3

  • Atualizando o framework
    • Toda a pasta /lib deve ser atualizada. Tome cuidado para não sobrescrever a pasta /app (sua aplicação). Faça um backup antes.
  • Atualizando a aplicação
    • O arquivo app/lib/include/facade.js deve ser atualizado. Ele contém novas funções Javascript de que manipulam o carregamento de páginas e postagem de valores de formulários como: __adianti_block_ui(), __adianti_unblock_ui(), __adianti_post_data(), dentre outras modificações;
    • O arquivo app/templates/theme1/libraries.html, que contém a inclusão de bibliotecas JavaScript e estilos, foi alterado e deve ser atualizado;
    • A biblioteca pChart (app/lib/pchart/) foi atualizada. Todo o diretório pode ser substituído pela nova versão. A classe app/lib/reports/TPChartDesigner.class.php também foi alterada;
    • Como ações (TAction) definidas em métodos como setChangeAction() e setExitAction() agora precisam necessariamente ser declaradas como static, será necessário rever todos os métodos declarados para responder à essas ações e declará-los como "public static function". Estes métodos não pode chamar internamente nenhum outro método no formato "$this->metodo()";


Migrando da 1.0.1 para 1.0.2

  • Atualizando o framework
    • Toda a pasta /lib deve ser atualizada. Tome cuidado para não sobrescrever a pasta /app (sua aplicação). Faça um backup antes.
  • Atualizando a aplicação
    • O engine.php (motor de execução para a Web) foi simplificado em tamanho. Muitas partes deste arquivo (responsáveis por decidir a classe e o método a serem executados) foram passados para a classe TCoreApplication, do núcleo do framework. É recomendável, mas opcional ao desenvolvedor atualizar o engine.php;
    • O index.web.php (front page para a Web) teve seu início simiplificado (até a chamada de ob_start()). Foram simplificadas algumas chamadas como TAdiantiCoreTranslator::setLanguage() e define('APPLICATION_NAME', ...). É recomendável, mas opcional ao desenvolvedor realizar tais atualizações no index.web.php;
    • Atenção: A constante APPLICATION_NAME, que é utilizada para separar o conteúdo de variáveis de sessão conforme o nome da aplicação, deve ter exatamente a mesma definição tanto no engine.php, quanto index.web.php, caso contrário alguns recursos como sessões apresentarão problemas;
    • Ações em datagrid agora são executadas mantendo os parâmetros de paginação. Assim, ao excluir um registro de uma datagrid, o usuário permanecerá na mesma página. Para que essa estratégia funcione, algumas mudanças devem ser realizadas:
      • Caso você ainda tenha um engine.php da versão anterior, deverá passar os parâmetros da URL ($_GET) ao executar o método show() da página $page->show( $_GET ). Na nova versão do engine.php (que utiliza a classe TCoreApplication, isso já está habilitado por default;
      • Sempre que o desenvolvedor reescrever o método show() em alguma página (datagrids) em que faz uma chamada ao método onReload(), deverá passar um novo parâmetro: $this->onReload( func_get_arg(0) ) ;
      • Os metodos delete() que fazem chamada ao método onReload() devem acrescentar um novo parâmetro na chamada ($param), que representa os parâmetros da URL, da seguinte forma: $this->onReload( $param );


Migrando da 1.0.0 para 1.0.1

  • Atualizando o framework
    • Toda a pasta /lib deve ser atualizada. Tome cuidado para não sobrescrever a pasta /app (sua aplicação). Faça um backup antes.
  • Atualizando a aplicação
    • Um novo grupo de bibliotecas para geração de gráficos está disponível. Para utilizar, basta atualizar as pastas app/lib/pchart e app/lib/reports.
    • Uma nova funcionalidade de tooltip/dica de preenchimento ($widget->setTip()) está disponível. Para utilizá-la, você deve adicionar a seguinte chamada ao template: $(function() { $( document ).tooltip(); });
    • Para aproveitar a biblioteca de envio de emails (TMail), atualize app/lib/mail e app/lib/util/TMail.class.php em sua aplicação.
    • Atualize o arquivo app/lib/include/facade.js, que foi aperfeiçoado para lidar melhor com abertura de janelas.
    • Todo o cabeçalho do template, contendo inúmeras chamadas para bibliotecas .JS e estilos CSS deve ser removido. Todas bibliotecas Javascript e arquivos CSS necessários agora estão encapsulados no arquivo libraries.html, que deve ser referenciado dentro do template pela palavra-chave {LIBRARIES}. Esta palavra-chave é substituída pelo conteúdo "libraries.html" pelo "index.web.php". Muitas bibliotecas externas utilizadas pelo framework foram atualizadas (jquery-1.8.3, jquery-ui-1.9.2), e algumas outras foram incluídas. Garanta que você tenha importado o libraries.html em sua aplicação usando a palavra-chave {LIBRARIES} dentro do cabeçalho de seu template;

Adianti Framework 1.0.0

    Release inicial.