Administração do sistema

Como customizar 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 pelas preferências "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:



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 Como alterar as cores do cabeçalho e/ou rodapé do Eligo?.

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:

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>

Alterando/Removendo cabeçalho via variáveis de sessão

Configurar um EVENT_LISTNER ver mais: Eventos de sistema, com evento de POS_LOGIN apontando para um operação customizada p.ex:
Preferência
RODAPE.EVENT_LISTENER
Valor
RT.POS_LOGIN:MODIFICAR_RODAPE

Onde RT.POS_LOGIN é o nome do evento e MODIFICAR_RODAPE é o nome da operação customizada.

Deixa em branco o conteúdo da preferência APP.UI.FOOTER_CONTENT.

Na operação customizada criar uma regra parecida com:
String key = "APP.UI.FOOTER_CONTENT";
if (ctx.getSession().getCurrentUser().isSuperUser()) {
	ctx.setSessionString(key, ctx.getPreference(key + "_DEFAULT"));
}

Neste caso só irá apresentar o rodapé para usuários que são super usuários

Ver também: