Runtime
Como configurar o cabeçalho e o rodapé das interfaces?
RT.FAQ-8201
O cabeçalho e rodapés das páginas do sistema são regidos pelos parâmetros de configuração "APP.UI.HEADER_CONTENT" e "APP.UI.FOOTER_CONTENT" que contém o respectivo código HTML. Estes códigos permitem o uso de placeholders identificados na forma ${nome}. Os placeholders disponíveis devem estar registrados na classe PlaceHoldersMap. Por padrão, a T2 registra automaticamente os seguintes placeholders:
- ${logo}: = Logotipo (ou nome) da aplicação registrado no parâmetro APP.UI.LOGO com um link para a página de entrada do sistema. Esta página é definida através das preferencias RT.UI.HOME_INTERFACE e RT.UI.USER_HOME_INTERFACE.
- ${menu} = Estrutura completa de HTML do menu do usuário no sistema.
- ${auth} = Informações sobre o usuário que está logado, bem como link para fazer login ou logout;
- ${version} = Versão do sistema retirado do WebXML (APP.VERSION)
- ${build} = Versão do build (APP.BUILD)
- ${notifications} = Representa o Código HTML (Área) para apresentação das notificações do sistema
- ${time} = Data e hora da aplicação
- ${globalName} = Nome global da interface acessada no momento
- ${interfaceName} = Nome da interface, sem o nome do sistema/subsistema.
- ${interfaceTitle} = Título da interface
- ${user} = Nome do usuário que está logado
- ${company} = Nome da empresa (APP.EMPRESA)
- ${memoryUsage} = Percentual de memória ocupado (objetos Java)
- ${instance} = Nome da instancia definido pelo parâmetro APP.NAME.
Importante
Caso esta configuração seja realizada por preferencia de sistema e a replicação estiver ativada, as configurações serão atualizadas em todas as bases replicadas.
Para que isto não ocorra, deve-se utilizar as configurações em arquivos .css, por instância de sistema - ver FAQ 8203.
Como criar placeholder customizados
Para criar novos placeholders com conteúdos específicos para uma aplicação, deve-se simplesmente registrar um objeto na classe PlaceHoldersMap. Este registro deve ser feito preferencialmente na inicialização do sistema (evento ON_START de algum sub-sistema). O placeholder é apenas um objeto cujo método toString() retorna o conteúdo desejado.
Exemplo:
Digamos que se deseja criar um placeholder que apresente o nome do banco de dados em uso:
PlaceHoldersMap.getInstance().put("build", new Object() {
@Override
public String toString() {
BaseRuntime ctx = BaseRuntime.getContext();
try {
return ctx.getDbName();
} catch (AdsException ignore) { }
return "";
}
});
Notas:
- Como o placeholder precisa apenas da implementação do método toString(), o uso de inner-class anônima é bastante conveniente.
- Os placeholders são objetos instanciados uma única vez e reutilizados por todas as sessões da aplicação, portanto, estes objetos NÃO DEVEM MANTER ESTADO a não ser de elementos que são objetos não mutantes entre as sessões.
- A package br.com.telescope.t2.view.placeholder possui vários exemplos de placeholders que podem servir como exemplo.
Valor default para APP.UI.HEADER_CONTENT
${logo}
<nav id=\"main\">${menu}</nav>
<section class=\"user-options\">${auth}</section>
Valor default para APP.UI.FOOTER_CONTENT
<section class=\"global-name\">${globalName}</section>
<section class=\"version\">${version}</section>
<section class=\"current-time right\">${time}</section>
${notifications}
Sugestão de código para o footer do Eligo
Criar preferência de sistema APP.UI.FOOTER_CONTENT com o seguinte conteúdo:
<table width="100%">
<tr>
<td>
<section class="global-name">${globalName}</section><section class="version">v${version}</section>
<section class="build">(${build})</section>
<section class="memory-usage">Memory used: ${memoryUsage}</section>
</td>
<td>
<section class="current-time">${time}</section>
</td>
<td>${notifications}
</td>
<td align="right">
<section class="links">
<ul>
<li>
<a href="http://www.prd.inf.br/wiki/index.php?title=${interfaceName}" target="_blank">Documentação</a>
</li>
<li>
<a href="http://www.prd.inf.br/suporte/client.php?locale=pt-br&name=${user} (${company})" target="_blank">Atendimento on-line</a>
</li>
<li>
<a href="http://www.prd.inf.br" target="_blank">PRD Tecnologia de Gestão</a></li>
</ul>
</section>
</td>
</tr>
</table>