Seguindo o meu objetivo de mostrar como as aplicações maker podem ser customizadas, gerando um visual completamente diferente do conhecido por todos, mostrarei neste post como modificar o menu utilizado na tela principal do sistema (main.jsp).
A pagina main.jsp ainda utiliza um conceito antigo, que é a utilização de códigos Java misturado com o código HTML, o famoso código macarrônico.
Para que possa ser apresentado um menu diferente do tradicional, criei uma função nesta página, para que o menu possa ser obtido juntamente com as suas permissões e montado na tela do usuário utilizando listas (Representadas pelas TAGs UL e LI). Meu objetivo será mostra como obter o menu do sistema e apresenta-lo na tela, outras opções relacionadas a estilo deixarei para um próximo post. Para que essa alteração possa ser fetita, recomendo um conhecimento básico sobre o funcionamento de páginas JSP, Java e HTML.
Seguindo os passos descritos abaixo iremos obter o resultado esperado com esse post.
Abra a pagina main.jsp, localizada na raiz do webrun, em algum editor HTML do seu gosto (Eu utilizei o Dreamweaver).
Acrescente na página a seguinte função:
<%!
String CreateMenu(List menu, boolean main, HTMLInterface i, WFRSystem s, String sys) {
String GlobalMenu = "";
if (menu != null) {
String classmainmenu = (main) ? " id=\"appmenu\"" : "";
GlobalMenu = GlobalMenu + "<ul" + classmainmenu + " class=\"submenu\">";
for (int x = 0; x < menu.size(); x++) {
if (menu.get(x) instanceof WFRMenuItem) {
String classtopmenu = "";
WFRMenuItem item = (WFRMenuItem) menu.get(x);
boolean hasitems = item.getSubMenus().size() > 0;
classtopmenu = (hasitems) ? " class=\"rootsubmenu\"" : "";
if (hasitems) {
GlobalMenu = GlobalMenu + "<li " + classtopmenu + " " + ">";
WFRAccessPermission p;
try {
p = item.getPermission(i.getAcessUser(), s.getAccess());
if (p.getVisible()) {
GlobalMenu = GlobalMenu + "<a href=\"#\" onclick=\"jQuery(this).parent().children('ul.submenu').toggle('slow');\">" + item.getDescription() + "</a>";
GlobalMenu = GlobalMenu + CreateMenu(item.getSubMenus(), false, i, s, sys);
GlobalMenu = GlobalMenu + "</li>";
}
} catch (Exception e) {
//
}
} else {
WFRAccessPermission p;
try {
p = item.getPermission(i.getAcessUser(), s.getAccess());
if (p.getVisible()) {
GlobalMenu = GlobalMenu + "<li class=\"form\"><a href=\"javascript:javascript:openFormNew('" + item.getForm().getGuid() + "', " + item.getForm().getWidth() + " , " + item.getForm().getHeight() + " , '" + item.getDescription() + "')\">" + item.getDescription() + "</a></li>";
}
} catch (Exception e) {
//
}
}
} else if (menu.get(x) instanceof WFRMenuReport) {
WFRMenuReport reportitem = (WFRMenuReport) menu.get(x);
GlobalMenu = GlobalMenu + "<li class=\"report\"><a href=\"#\" onclick=\"openReport('" + sys + "', " + reportitem.getDBCode() + ", '" + reportitem.getDescription() + "', 'false');\">" + reportitem.getDescription() + "</a></li>";
}
}
GlobalMenu = GlobalMenu + "</ul>";
}
return GlobalMenu;
}
%>
Na página adicione o seguinte trecho de código para poder exibir o menu gerado.
<%=CreateMenu(system.getMenus(), true, htmlInterface, system, request.getParameter("sys"))%>
Essa alteração em main.jsp irá refletir em todos os seus sistemas. Em breve postarei outros exemplos de customização para aplicações desenvolvidas com a plataforma Maker.
Um abraço a todos e até o próximo post.
Tem um exemplo de como ficou ?!
ResponderExcluirTenho sim Medeiros... Estou configurando minha conta no rapidshare p poder disponibilizar os arquivos do blog.
ExcluirOlá meu caro boa tarde.
ResponderExcluirObservo que mudanças no visual do aplicativo começam a surgir, o pessoal ta de olhos bem abertos para os componentes desatualizados que o Maker possue, e hoje começo a pensar em mudanças no background e/ou skin, logico o menu é um bom componente para se mudar, ainda não tentei partir para a pratica, a falta de intimidade com Html e javascript com certeza é o que me atrasa.
Prezado em que local do main.jsp este código seria inserido?
Vou disponibilizar esse arquivo aqui no blog. O main.jsp com as alterações que fiz.
ExcluirAndré,
ResponderExcluirNão sei se isso aconteceu com você, mas, quando eu clico em algum item do menu, não chama (abre) o objeto (Formulário, Relatório) que esta associado.
Vale lembrar que antes das modificações funcionava.
Como eu fiz:
Coloquei todo o código da alteração logo no início do Body, antes da função que renderiza a imagem do background. E remove o código que busca o menu "antigo"
Vou disponivilizar o main.jsp alterado para qye vcs possam compreender melhor a alteração que foi feita.
ResponderExcluirnao abre formulario nenhum da uma mensagem pressiono ok e nada acontece
ResponderExcluirMarcobolacha. O exemplo que coloquei mostra apenas a url p abrir o formulario ou relatorio em uma mensagem. A lartor dessa url v poderá implementar n formas de abrir seus formularis ou relatorios... abs
ResponderExcluirTop demais !
ResponderExcluir