4D v14.3Etiquetas HTML 4D |
||||||||||||||||||||||||||||||||||||||
|
4D v14.3
Etiquetas HTML 4D
|
Ação | Análise do conteúdo das páginas enviadas | Conjunto de caracteres utilizado para a análise das etiquetas Extensões das páginas (caso geral): |
.htm, .html, .shtm, .shtml (páginas HTML) | X | |
.xml, .xsl (páginas XML) | X | |
.wml (páginas WML) | X | |
Páginas chamadas via URLs | X, exceto páginas com extensões “.htm” or “.html” | Uso do charset passado como parâmetro do cabeçalho "Content-Type" da página. Se não há nenhum, procura uma etiqueta META-HTTP EQUIV com um charset. Caso contrário, utiliza o conjunto de caracteres por padrão do servidor HTTP |
Comando WEB SEND FILE | X | Uso do charset passado como parâmetro do cabeçalho "Content-Type" da página. Se não há nenhum, procure uma etiqueta META-HTTP EQUIV com um charset. Caso contrário, utilize o conjunto de caracteres por padrão do servidor HTTP |
Comando WEB SEND TEXT | X | Não é necessária a conversão |
Comando SEND HTML BLOB | X, se o BLOB é de tipo “text/html” | Uso do charset passado como parâmetro do cabeçalho "Content-Type" da resposta. Caso contrário, utiliza o conjunto de caracteres por padrão do servidor HTTP |
Inclusão pela etiqueta <!--4DINCLUDE --> | X | Uso do charset passado como parâmetro do cabeçalho "Content-Type" da página. Se não há nenhum, procure uma etiqueta META-HTTP EQUIV com um charset. Caso contrário, utilize o conjunto de caracteres por padrão do servidor HTTP |
Comando PROCESS 4D TAGS | X | Dados texto: não conversão. Dados BLOB: conversão automática do conjunto de caracteres Mac-Roman por compatibilidade |
Para ser processado por 4D, um comentário HTML deve ter o seguinte formato <!--#4D...-->. Por favor leve em consideração que alguns editores HTML adicionam automaticamente outra informação dentro do comentário; isso pode provocar erros de análise.
Entretanto, outros comentários HTML tais como <!--Beginning of list--> são possíveis.
Se um comentário <!--#4D... não termina 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 sub pá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ção Conexõ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 expressão 4D e inseri-la em uma página como uma expressão HTML. Diferente da etiqueta 4DTEXT, esta etiqueta não converte os caracteres especiais 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 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 On Web Authentication Database Method (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 WEB SEND 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––></span>--> : The method does not exist.<!--#4DSCRIPT/MIMETH/MIPARAM-->” 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)
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 WEB SEND FILE .
Nota: quando utilizar a etiqueta 4DINCLUDE com o comando PROCESS 4D 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-->
Syntax: <!--#4DBASE folderPath-->
The <!--#4DBASE --> tag designates a working directory that is used by the <!--#4DINCLUDE--> tag.
When it is called in a Web page, the <!--#4DBASE --> tag modifies all subsequent <!--#4DINCLUDE--> calls on this page, until the next <!--#4DBASE -->, if any. If the <!--#4DBASE --> folder is modified from within an included file, it retrieves its original value from the parent file.
The folderPath parameter must contain a pathname relative to the current page and it must end with a slash (/). The designated folder must be located inside the Web folder.
Pass the WEBFOLDER keyword to restore the default path (relative to the page).
Thus the following code (4D v12), which must specify a relative path for each call:
<!--#4DINCLUDE subpage.html--> <!--#4DINCLUDE folder/subpage1.html--> <!--#4DINCLUDE folder/subpage2.html--> <!--#4DINCLUDE folder/subpage3.html--> <!--#4DINCLUDE ../folder/subpage.html-->
... can be rewritten using the <!--#4DBASE --> tag:
<!--#4DINCLUDE subpage.html--> <!--#4DBASE folder/--> <!--#4DINCLUDE subpage1.html--> <!--#4DINCLUDE subpage2.html--> <!--#4DINCLUDE subpage3.html--> <!--#4DBASE ../folder/--> <!--#4DINCLUDE subpage.html--> <!--#4DBASE WEBFOLDER-->
Definição de um escritório para a página de início utilizando a etiqueta <!--#4DBASE -->:
/* Index.html */ <!--#4DIF LangFR=True--> <!--#4DBASE FR/--> <!--#4DELSE--> <!--#4DBASE US/--> <!--#4DENDIF--> <!--#4DINCLUDE head.html--> <!--#4DINCLUDE body.html--> <!--#4DINCLUDE footer.html-->
No arquivo head.html, a pasta atual se modifica via <!--#4DBASE -->, sem que mude seu valor em Index.html:
/* Head.htm */ /* o escritório de trabalho aqui é relativo ao arquivo incluído (FR/ ou US/) */ <!--#4DBASE Styles/--> <!--#4DINCLUDE main.css--> <!--#4DINCLUDE product.css--> <!--#4DBASE Scripts/--> <!--#4DINCLUDE main.js--> <!--#4DINCLUDE product.js-->
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>
Este exemplo insere páginas diferentes em função do usuário conectado:
<!--#4DIF LoggedIn=False--> <!--#4DINCLUDE Login.htm --> <!--#4DELSEIF User="Admin" --> <!--#4DINCLUDE AdminPanel.htm --> <!--#4DELSEIF User="Manager" --> <!--#4DINCLUDE SalesDashboard.htm --> <!--#4DELSE--> <!--#4DINCLUDE ItemList.htm --> <!--#4DENDIF-->
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
PROCESS 4D TAGS
4DVAR, 4DTEXT, 4DHTMLVAR, 4DHTML, 4DSCRIPT, 4DINCLUDE, 4DIF, 4DLOOP, 4DELSEIF
Manual de linguagem 4D ( 4D v14 R2)
Manual de linguagem 4D ( 4D v14 R3)
Manual de linguagem 4D ( 4D v13.5)
Manual de linguagem 4D ( 4D v14.3)
Inherited from :
Etiquetas HTML 4D ( 4D v12.4)
Parent of :
Etiquetas HTML 4D ( 4D v14 R4)