4D v12.4Etiquetas HTML 4D |
||||||||||||||||||||||||||||||
|
4D v12.4
Etiquetas HTML 4D
|
Condições de envio | Análise do conteúdo das páginas enviadas |
Extensões das páginas (caso geral): | |
.htm, .html, .shtm, .shtml (HTML pages) | X |
.xml, .xsl (páginas XML) | X |
.wml (páginas WML) | X |
Páginas chamadas através URLs | X, exceto páginas com extensões “.htm” ou “.html” |
Comando SEND HTML FILE | X |
Comando SEND HTML TEXT | X |
Comando SEND HTML BLOB (se o BLOB for do tipo “text/html”) | X |
Inclusão pela etiqueta <!--4DINCLUDE --> | X |
Entretanto, outros comentários HTML tais como <!--Beginning of list--> são posíveis.
Se um comentário <!--#4D... não terminar em -->, a seguinte mensagem “<!--#4D... : --> esperado” se inserirá e a análise será interrompida neste nível (a página será enviada para indicar o erro).É possível misturar diferentes tipos de comentários. Por exemplo, é possível a seguinte estrutura HTML:
<HTML> ... <BODY> <!--#4DSCRIPT/PRE_PROCESS--> (Chamada do método) <!--#4DIF (myvar=1)--> (condição If) <!--#4DINCLUDE banner1.html--> (Inserir Subpágina) <!--#4DENDIF--> (End if) <!--#4DIF (myvar=2)--> <!--#4DINCLUDE banner2.html--> <!--#4DENDIF--> <!--#4DLOOP [TABLE]--> (loop na seleção atual) <!--#4DIF ([TABLE]ValNum>10)--> (If [TABLE]ValNum>10) <!--#4DINCLUDE subpage.html--> (inserir subpágina) <!--#4DELSE--> (Else) <B>Value: <!--#4DTEXT [TABLE]ValNum--></B><BR> (Field display) <!--#4DENDIF--> <!--#4DENDLOOP--> (End for) </BODY> </HTML>
Sintaxe: <!--#4DTEXT NomeVar--> ou <!--#4DTEXT 4DExpression-->
A etiqueta <!--#4DTEXT NomeVar--> lhe permite inserir uma referência a uma variável ou a uma expresão 4D em qualquer parte de uma página HTML. Por exemplo, se escreve:
<P>Bem-vindo a<!--#4DTEXT vtNomeSite-->!</P>
A conversão da expressão segue as mesmas regras que a conversão de uma variável. Além disso, a expressão deve cumprir com as regras de sintaxe de 4D.
Nota: a execução de um método 4D com 4DTEXT depende do valor do atributo “Disponível através das etiquetas HTML e URLs 4D (4DACTION...)” definido nas propriedades do método. Para maior informação, consulte a seçãoConexões de Segurança.
Em caso de erro de interpretação, o texto inserido será da forma “<!--#4DTEXT myvar--> : ## erro # erro code”.
Notas:
Nota de compatibilidade: esta etiqueta mais especializada substitui a etiqueta genérica 4DVAR a partir da versão 12.2 de 4D. A etiqueta 4DVAR ainda é compatível e funciona como nas versões anteriores. Entretanto, não se recomenda utilizar a etiqueta 4DTEXT para inserir o texto.
Sintaxe: <!--#4DHTML NomVar--> ou <!--#4DHTML 4DExpression-->
Esta etiqueta permite avaliar uma variável ou uma expresão 4D e inserí-la em uma página como uma expresão HTML. Diferente da etiqueta 4DTEXT, esta etiqueta converte os carateres a código HTML.
Por exemplo, esses são os resultados da inserção da variável texto 4D minhavar com as etiquetas disponíveis:
Valor minhavar | Etiquetas | Inserção na página web |
minhavar:="<B>" | <!--#4DTEXT minhavar--> | <B> |
minhavar:="<B>" | <!--#4DHTML minhavar--> | <B> |
Nota: a execução de um método 4D com 4DHTML depende do valor do atributo “Disponível através as etiquetas HTML e URLs 4D (4DATION...)” definido nas propriedades do método. Para maior informação consulte a seção Conexões de Segurança.
Nota: a variável texto deve ser expressa utilizando o mapa de carateres ISO Latim-1 (para maior informação, consulte a descrição do comando Mac to ISO).
Nota de compatibilidade: essa etiqueta substitui 4DHTMLVAR a partir da versão 12.2 de 4D. A etiqueta 4DHTMLVAR ainda é compatível, mas devido a legibilidade de código, é recomendado usar a etiqueta 4DHTML para inserir no código HTML
Sintaxe: <!--#4DSCRIPT/NomeMetodo/MeuParam-->
A etiqueta 4DSCRIPT lhe permite executar métodos 4D no momento do envio de páginas HTML estáticas. A presença da etiqueta <!--#4DSCRIPT/MeuMétodo/MeuParam--> em uma página estática como um comentário HTML provoca a execução do método MeuMétodo com o parâmetro MeuParam como string em $1. Quando se carrega a página de inicio, 4D chama ao OS Serial Ports Manager Errors (-28)Método de banco On Web Aunthentication (se existir). Se retorna True, 4D executa o método.O método retorna texto em $0. Se a string começa com o caráter de código 1, se considera como HTML (o mesmo princípio que para as variáveis).
Nota: a execução de um método com 4DSCRIPT depende do valor do atributo “Disponível através as etiquetas HTML e URLs 4D (4DATION...)” definido nas propriedades do método. Para maior informação, consulte a seção Conexões de Segurança.
As análises dos conteúdos da página é feita quando SEND HTML FILE (.htm, .html, .shtm, .shtml) ou SEND HTML BLOB (blob de tipo text/html) for chamada.
Lembre que em modo não contextual, a análise é também feita quando uma URL aponta para um arquivo que tenha a extensão “.shtm” ou “.shtml” (por exemplo http://www.server.com/dir/page.shtm).
O método retorna texto em $0 (por exemplo “12/31/03”); a expressão “Hoje é <!--#4DSCRIPT/MEUMET/MEUPARAM––>” se converte em “Hoje é 12/31/03”.
O código do método MIMET é:
C_TEXT($0) `Este parâmetro sempre deve declarado
C_TEXT($1) `Este parâmetro sempre deve ser declarado
$0:=String(Current date)
Aviso: Você deve sempre declarar os parâmetros $0 e $1 no método chamado.
Como 4D executa os métodos em sua ordem de aparição, é muito possível chamar a um método que define o valor de muitas variáveis que estão referenciadas mais adiante no documento, qualquer que seja o modo que esteja utilizando.
Nota: pode inserir tantos comentários <!--#4DSCRIPT...--> quantos queira em uma página estática.
Sintaxe: <!--#4DINCLUDE Path-->
Este comentário permite incluir, em uma página HTML, outra página HTML (indicado pelo parâmetro rota). Por padrão só se inclui o corpo da página HTML especificada, ou seja o conteúdo entre as etiquetas <body> e </body> (as etiquetas mesmas não são incluídas). Isso lhe permite evitar conflitos relacionados com as etiquetas presentes nos cabeçalhos. Entretanto se a página HTML especificada não contiver etiquetas <body></body>, a página completa é incluída. Você deve verificar a consistência das meta etiquetas.
O comentário <!--#4DINCLUDE --> é muito útil para testes (<!--#4DIF-->) ou loops (<!--#4DLOOP-->). É muito conveniente incluir etiquetas em função de um criterio ou de maneira aleatoria.
Ao momento da inclusão, sem importar a extensão do nome do arquivo, 4D analiza a página chamada e depois insere os conteúdos (modificados ou não) na página que origina a chamada 4DINCLUDE.
A localização na caché web de uma página incluida com o comentário <!--#4DINCLUDE --> responde às mesmas regras que as páginas chamadas através um URL ou enviadas com o comando SEND HTML FILE .
Nota: quando utilizar a etiqueta 4DINCLUDE com o comando PROCESS HTML TAGS, a pasta por padrão é a pasta que contém o arquivo de estrutura do banco.
O número de <!--#4DINCLUDE rota--> dentro de uma página é ilimitado. Entretanto, as chamadas a <!--#4DINCLUDE rota--> só podem ser realizadas a um nível. Isso significa que, por exemplo, não pode inserir o comentário <!--#4DINCLUDE meudoc3.html--> no corpo da página meudoc2.html, chamada por <!--#4DINCLUDE meudoc2--> inserido em meudoc1.html.
Além disso, 4D verifica que as inclusões não sejam recursivas.
Em caso de erro, o texto inserido é da forma "<!--#4DINCLUDE rota--> :Não se pode abrir o documento".
Exemples
<!--#4DINCLUDE subpage.html--> <!--#4DINCLUDE folder/subpage.html--> <!--#4DINCLUDE ../folder/subpage.html-->
Sintaxe: <!--#4DIF expression--> <!--#4DELSE--> <!--#4DENDIF-->
Utilizado com os comentários <!--#4DELSE--> (opcional) e <!--#4DENDIF-->, o comentário <!--#4DIF expresion--> oferece a possibilidade de executar código HTML de maneira condicional.
O parâmetro expresion pode conter toda expressão 4D válida devolvendo um valor booleano. Deve estar entre parêntese e cumprir com as regras de sintaxe de 4D.
Os blocos <!--#4DIF expression--> ... <!--#4DENDIF--> podem estar aninhados em vários níveis. Como em 4D, cada <!--#4DIF expression--> deve ter um <!--#4DENDIF--> correspondente.
Da mesma forma, se não houver tantos <!--#4DENDIF--> quantos <!--#4DIF -->, o texto “<!--#4DIF expression-->: 4DENDIF esperado” é inserido ao invés dos conteúdos localizados entre <!--#4DIF --> e <!--#4DENDIF-->.
Esse exemplo de código inserido em uma página de HTML estática exibe uma etiqueta diferente de acordo com o resultado da expressão vname#""
<BODY> ... <!--#4DIF (vname#"")--> Nomes que começam com <!--#4DTEXT vname-->. <!--#4DELSE--> Nenhum nome foi encontrado. <!--#4DENDIF--> ... </BODY>
Sintaxe: <!--#4DLOOP condition--> <!--#4DENDLOOP-->
Os blocos <!--#4DLOOP condicion--> ... <!--#4DENDLOOP--> podem estar aninhados. Como em 4D, cada <!--#4DLOOP condicion--> deve ter um <!--#4DENDLOOP--> correspondente.
Há três tipos de condições:
Nota: quando a etiqueta 4DLOOP se utiliza com uma tabela, os registros se carregam em modo só letura.
<!--#4DLOOP [Pessoas]--> <!--#4DTEXT [Pessoas]Nome--> <!--#4DVAR [Pessoas]Sobrenome-><BR> <!--#4DENDLOOP-->
FIRST RECORD([Pessoas])
While(Not(End selection([Pessoas])))
...
NEXT RECORD([Pessoas])
End while
O seguinte exemplo de código HTML:
<!--#4DLOOP arr_names--> <!--#4DTEXT arr_names{arr_names}--><BR> <!--#4DENDLOOP-->
... pode ser traduzida em linguagem 4D da seguinte maneira:
For($Elem;1;Size of array(arr_names))
arr_names:=$Elem
...
End for
<!--#4DLOOP meu_metodo--> <!--#4DTEXT var--> <BR> <!--#4DENDLOOP-->
... pode ser traduzida em linguagem 4D da seguinte maneira:
If(AuthenticationWebOK)
If(meu_metodo(0))
$counter:=1
While(meu_metodo($counter))
...
$counter:=$counter+1
End while
End if
End if
O método meu_metodo pode ser realizado dessa forma:
C_LONGINT($1)
C_BOOLEAN($0)
If($1=0)
`Initialisação
$0:=True
Else
If($1<50)
...
var:=...
$0:=True
Else
$0:=False `Para o loop
End if
End if
Em caso de um erro de interpretação, o texto “<!--#4DLOOP expression-->: Descrição” é inserido em vez do conteúdo localizado entre <!--#4DLOOP --> e <!--#4DENDLOOP-->.
Pode aparecer uma das seguintes mensagens:
- Não se esperava uma expresão deste tipo (erro padrão)
- Nome de tabela incorreto (erro no nome da tabela)
- Um array era esperado (a variável não é um array ou é um array de duas dimensões)
- O método não existe
- Erro de sintaxe (quando o método for executado)
- Erro de acesso (não tem os privilégios de acesso apropriados para acessar a tabela ou ao método)
- 4DENDLOOP esperado (o número de <!--#4DENDLOOP--> não corresponde a <!--#4DLOOP -->).
Produto: 4D
Tema: Web Server
Ações URL e Formulário
Binding 4D objects with HTML objects
4DVAR, 4DTEXT, 4DHTMLVAR, 4DHTML, 4DSCRIPT, 4DINCLUDE, 4DIF, 4DLOOP***