Marcação Condicional
Usando a diretiva (:if:)
A diretiva (:if:)
A diretiva if permite que partes de uma página sejam incluidas ou excluidas da renderização. As formas genéricas da diretiva (:if:)
são:
(:if cond param:) texto (:ifend:)
(:if cond param:) texto (:else:) texto (:ifend:)
(:if cond param:) texto (:elseif cond param:) texto (:ifend:)
Onde "cond" é uma condição à ser testada, e "param" é um parâmetro ou outro argumento da condição.
Note que (:if:)
sem parâmetros e (:ifend:)
sõ identicos. Note também que (:if cond:)
fecha automaticamente uma condição prévia. Para aninhamento em múltiplos níveis, veja Condições aninhadas.
Condições embutidas
As condições embutidas incluem:
(:if name PAGENAME:)
| - | Página atual tem o nome "PAGENAME "
|
(:if group GROUPNAME:)
| - | Grupo atual tem nome "GROUPNAME "
|
(:if auth LEVEL PAGENAME:)
| - | usuário está autorizado - significa "o que é permitido que o usuário faça" - corresponde a "LEVEL " onde LEVEL pode ser: read , edit , upload , attr ou admin ; PAGENAME é opcional.
|
(:if authid:)
| - | Usuário atual esta autenticado - significa que eles provaram quem são ataravés do login - para usar essa capacidade é necessário o uso da receita AuthUser? ou outras que usem a variável $AuthId .
|
(:if enabled InvalidLogin:)
| - | usuário e senha não foram atenticados. É necessário o uso da receita AuthUser. |
(:if true:)
| - | sempre irá incluir o texto |
(:if false:)
| - | sempre irá excluir o texto (mesmo que comentário) |
(:if attachments:)
| - | A Página tual tem um ou mais arquivos anexados
Se usado na barra lateral, cabeçalho, ou rodapé a condição será aplicada somente a página principal. |
(:if date DATA VALOR:)
| - | DATE pode ser ano-mês. ano-mês-dia é opcional.
Avaliado com verdadeiro se |
(:if date DATA.. VALOR:)
| - | verdadeiro se VALOR (ou data atual se omitida) é DATA or later (unlimited)
|
(:if date ..DATA VALOR:)
| - | verdadeiro se VALOR (ou data atual se omitida) é DATA or earlier (unlimited)
|
(:if date DATA1..DATA2 VALOR:)
| - | verdadeiro se VALOR (ou data atual, se omitida) está no intervalo DATA1 até DATA2 (inclusivamente)
datas estão em standard formato yyyy-mm-dd ou yyyymmdd ou yyyymmddThhmm (note o "T" entre a data e a hora, e também veja o comentário acima sobre a formatação de VALOR).
|
(:if enabled VAR:)
| - | verdadeiro se variável do PHP (VAR) for verdadeiro |
(:if enabled AuthPw:)
| - | verdadeiro se o usuário enviu sua senha durante a sessão atual.
- Isso não significa que o usuário enviou a senha correta, mas sim que ele enviou uma senha qualquer. |
(:if equal STRING1 STRING2:)
| - | verdadeiro se STRING1 é igual a STRING2 , use aspas se a string ou variavel contém espaços, e.g. "MINHA STRING"
|
(:if match REG_EXPRESSION:)
| - | verdadeiro se o nome da página atual corresponde à expressão regular |
(:if exists PAGENAME:)
| - | verdadeiro se a página pagename existe |
(:if ontrail WikiTrailPage ThisPage:)
| - | verdadeiro se ThisPage está numa lista usada como trail em WikiTrailPage |
Os condicionais nome e grupo funcionarão mesmo para uma página incluída, como o "nome" e "grupo" condicionais sempre verificar a página exibida atualmente, em oposição a página que a marcação aparece dentro.
Nota : Although there is no built-in conditional markup to test ?action=, you can use (:if equal {$Action} AÇÃO:)
to test what the current action being requested is. Nota: não há marcação condicional embutida para testar qual é a "?action=" atual. Embora seja possível usar (:if equal {$Action} AÇÃO:)
para testar qual a ação atual está sendo solicitada.
Condicionais negativadas
Condicionais negativadas também funcionam:
(:if !attachments:)
| - | Esta página não possui anexos |
(:if ! name PAGENAME:)
| Página atual não é "PAGENAME "
| |
(:if name -PAGENAME :)
|
Aninhando condicionais
Note que (:if cond:)
automaticamente fecha uma condional prévia. Assim, os dois exemplos a seguir tem o mesmo significado:
(:if cond1:) cond1 é verdadeira (:if cond2:) cond2 é verdadeira (:ifend:)
(:if cond1:) cond1 é verdadeira (:ifend:)(:if cond2:) cond2 é verdadeira (:ifend:)
Condicionais podem ser aninhadas desde a versão 2.2.beta 66. Para aninhar condionais você precisa numerar os IFs, and ELSE/IFEND correspondentes:
(:if cond1:) cond1 é verdadeira (:if2 cond2:) cond1 e cond2 são verdadeiras (:else2:) cond1 é verdadeira, cond2 não é (:if2end:) (:else:) cond1 é falsa, cond2 teste foi ignorado (:ifend:)
espaços foram adicionados para uma melhor leitura.
Usando coringas para cobrir espaços
O caractere * pode ser usado como um curinga para representar qualquer personagem, zero, um ou mais vezes. O caractere ? pode ser usado como um curinga para representar qualquer caractere exatamente uma vez. Os caracteres curinga ( * e ? ) podem ser usados com as condicionais de nome e grupo, assim:
(:if name PmCal.2005* :)
| - | página atual está no grupo PmCal e inicie com 2005 |
(:if group PmWiki* :)
| - | Página atual está no grupo PmWiki ou um começando com PmWiki |
(:if name Profiles.*,-Profiles.Profiles :)
| - | A página atual está no grupo Profiles mas não em Profiles.Profiles
|
Usando PageTextVariables?, PageVariables? e MarkupExpressions?
Variáveis de Texto da Página -> Page text variables (PTVs), variáveis de página -> page variables (PVs) e expressões de marcação-> markup expressions podem ser usadas em conditionais. Estes serão atribuidos/avaliados antes das condicionais.
Combinando condicionais
Condicionais (como previamente definido) podem ser combinadas para formar expressões condicionais mais complexas usando uma das três formas equivalentes:
(:if expr EXPRESSÃO :) (:if [ EXPRESSÃO ] :) (:if ( EXPRESSÃO ) :)
As condições são combinadas em expressões com operadores booleanos e parênteses.Na tabela ao lado, A e B são condições regulares ou sub-expressões entre colchetes de condições regulares:
Expression | Operator | Result |
---|---|---|
A and B | And | TRUE se ambos A e B são TRUE. |
A or B | Or | TRUE se ambos A ou B são TRUE. |
A xor B | Xor | TRUE se ambos A ou B é TRUE, mas não ambos. |
! A | Not | TRUE se A não é TRUE. |
A && B | And | TRUE se ambos A e B são TRUE. |
A || B | Or | TRUE se ambos A ou B são TRUE. |
Exemplo
(:if [ name SomePage and group SomeGroup ]:) equivalent to (:if name SomeGroup.SomePage:)
Notas Importantes:
- Espaços são necessários no início e fim de operadores e parênteses.
- Nenhum aviso é dado para erros de sintaxe or unbalanced brackets.
- Use parênteses para expressões aninhadas.
Assim, o que se segue é uma maneira válida de se construir uma expressão que mostra o seguinte conteúdo somente quando o usuário é o administrador, ou está conectado e o tempo é mais tarde que data indicada:
(:if [ auth admin || ( authid && date 2006-06-01.. ) ] :)
Aninhamento com colchetes falharão silenciosamente:
(:if [ auth admin || [ authid && date 2006-06-01 ] ] :)
NOTA: Não funciona!
Um uso comum destes testes complexos para expressões como:
(:if expr auth admin || auth attr || auth edit :)
[[Logout -> {$Name}?action=logout]]
(:ifend:)
que fornecem um link de logout(saida) só quando o usuário tem permissões parar admin, attr, ou edit.
administradores (avançado)
Criando novas condicionais
Veja ConditionalMarkupSamples.
Veja também referências especiais para o uso de {*$Variáveis}.
Essa é possivelmente a tradução do original em : PmWiki.ConditionalMarkup - Links de retorno
Essa tradução se encontra em : PmWikiPtBr.ConditionalMarkup - Links de retorno
Últimas modificações da tradução feitas em : 10 de setembro de 2011, às 16h00
Últimas modificações feitas no original em : 28 de abril de 2024, às 07h20