quarta-feira, 18 de setembro de 2013

Mudando o menu da tela principal do sistema

Ola! Estou mais uma vez aqui, depois de um bom tempo, alias tempo tem sido algo um pouco difícil ultimamente.

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.


9 comentários:

  1. Respostas
    1. Tenho sim Medeiros... Estou configurando minha conta no rapidshare p poder disponibilizar os arquivos do blog.

      Excluir
  2. Olá meu caro boa tarde.

    Observo 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?

    ResponderExcluir
    Respostas
    1. Vou disponibilizar esse arquivo aqui no blog. O main.jsp com as alterações que fiz.

      Excluir
  3. André,

    Nã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"

    ResponderExcluir
  4. Vou disponivilizar o main.jsp alterado para qye vcs possam compreender melhor a alteração que foi feita.

    ResponderExcluir
  5. nao abre formulario nenhum da uma mensagem pressiono ok e nada acontece

    ResponderExcluir
  6. Marcobolacha. 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

    ResponderExcluir