Notícias

Master Pages

Hoje vamos falar de duas novas propriedades dos WebPanels que a versão 9.0 de GeneXus traz Type y Master Page que junto com o novo componente Content Placeholder implementam a funcionalidade de Master Pages. Por Gxopen Task Force.

Sabemos que uma intenção (confessada) de GeneXus é liberar o analista das tarefas automatizáveis, deixando-lhe mais tempo para analisar. As Master Pages estão alinhadas com essa política, facilitando a tarefa de desenvolvimento de aplicações web.

No desenho destas aplicações existem certas características comuns a todos os objetos da aplicação que hoje estamos repetindo em cada um deles. Nos referimos a: Header, Menu, Footer, Área de dados (Content Placeholder), Theme e outros segundo o site.

O conceito de Master Page é centralizar estas características e aplicá-las de forma automática a todos os WebPanels relacionados a mesma.

Diferenças entre usar "Master Pages" (MP) e "WebComponents" (WC)

Imaginemos uma mesma aplicação web feita com MP ou com WC.

1) Usando MP. A aplicação contaria com um único MasterPage onde estão definidos os elementos de: menu, header, footer, área de dados. Também nessa única página está definido o controle de usuários. Os outros web panels da aplicação serão ativados na área de dados (Content PlaceHolder) do MP. Portanto, não é necessário que contenham menu, header, footer. Também não necessitam duplicar o controle de acesso já que por estar relacionados a um MP não podem ser invocados diretamente, sempre aparecem no content Placeholder do mesmo.

2) Usando WC. Cada um dos web panels da aplicação teria definidos: menu, header, footer e área de dados. Cada um dos web panels necessita duplicar o controle de acesso.

Um exemplo do desenho de uma Master Page se aprecia na Figura 1.



 Fig.1. Exemplo de uma Master Page

Como verão, o "Header" e o "Menu" são "WebComponents" e o "Footer" pode ser um texto em uma tabela dentro da Master Page.

Implementando nossa primeira Master Page

Como todo objeto novo, dentro de GeneXus 9.0 nos dirigimos a "Object/New Object" ou Ctrl-N. Aqui selecionamos o tipo de "WebPanel" e complementamos os dados restantes como o Nome e a Descrição (Figura 2).



 Fig.2- Criação de uma Master Page

Depois dentro do WebPanel, especificamos em suas propriedades que é do tipo "Master Page". Observamos que ao selecionar o valor "Master Page" desaparece a propriedade "Main Program". Isto sucede porque os Master Pages sempre são main.



 Fig.3- Indicar que o WebPanel é uma Master Page

Depois trabalhamos o webpanel, em nosso caso, diferenciamos com uma tabela, Cabeçalho, Conteúdo e Pé de página, e com outra tabela, dividimos o conteúdo para ter um menu -> esquerda.

Logo em seguida, inserimos os WebComponents nos lugares correspondentes e o novo componente "Content Placeholder" na área de conteúdo:



 Fig.4- Exemplo prático de uma Master Page

Desta maneira já temos nosso primeiro objeto Master Page. De todas maneiras neste exemplo, será necessário criar dois WebComponents, um para o Cabeçalho e outro para o Menu.

Utilizando nossa Master Page

Para poder utilizar nossa MasterPage, devemos seguir os seguintes passos:

1- Criar ou abrir um WebPanel.

2- Abrir a folha de propriedades e selecionar na propriedade "MasterPage", a MasterPage associada ao mesmo. No nosso caso "MainMP".

Para exemplificar este passo e ajudar nosso exemplo, criaremos dois WebPanel, um chamado "Pagel" e outro chamado "Page2", os quais vincularemos a nossa Master Page (Figura 5). Depois indicamos ao WebPane "Page1" que seja um objeto "Main".





 Fig.5- Vinculando um WebPanel a uma Master Page

Implementando objetos associados ao MasterPage

Para que nosso exemplo prático esteja completo, criaremos os objetos necessários para que o mesmo seja funcional. Criando o WebCompnent "WcHeader" que será o nosso cabeçalho.

1- Primeiro vamos a "Object/New Object" e completamos os dados de criação.



 Fig.6- Criação do WebComponent "WcHeader"

2- Nas propriedades do novo objeto indicamos que se trata de um WebComponent.



Fig.7-  Indicando a propriedade de Componente

3- Acrescentamos um título centrado, no nosso exemplo: "GxOpen.com"

Criando o WebComponent "WcMenu" que será nosso menu

1- Repetimos os passos 1 e 2 da criação do objeto "WcHeader", mas indicando o nome "WcMenú.

2- Criamos uma tabela de 1 coluna e 2 filas a qual oficiará de menu.

3- Na célula no.1, acrescentaremos um "TextBlock" com o nome "tbOpc1" e descrição "Página 1".

4- Na célula no.2, acrescentaremos um "TextBlock" com o nome "tbOpc2" e descrição "Página 2".

5- Nos eventos, acrescentaremos o seguinte código para que os "TextBlock" chamem as correspondentes páginas criadas na seção "Utilizando nossa Master Page".

Event tbOpc1.Click

call(HPage1)

EndEvent // tbOpc1.Click

Event tbOpc2.Click

call(HPage2)

EndEvent // tbOpc1.Click

  

Para finalizar com o exemplo, deve-se vincular os WebComponents "WCHeader" e "WCMenu" da Master Page "MainMP" a seus correspondentes "WcHeader" e "WcMenu" com a propriedade "Object" dos WebComponents (Figura 9).



 Fig.9- Vinculando o componente "WcMenu".

Seqüência de execução de Eventos em uma Master Page

1- Evento "Start" da Master Page.

2- Evento "Start" do WebPanel.

3- Evento "Refresh" e "Load" da Master Page.

4- Evento "Load" do WebPanel.

5- Outros eventos.

Este exemplo foi provado em um modelo .Net e se encontra disponível para descarregar no vínculo

http://www.gxopen.com/gxopen/servlet/hproject?506 em GxOpen.com

Referências

Para realizar este artigo, foram tomadas notas da documentação sobre Master Pages que se encontra em: http://wiki.gxtechnical.com/wiki/tiki-index.php?page=MasterPages