Utilisation de la directive (:if:)

La directive (:if:) permet à certaines portions de la page d'être incluses ou exclues du traitement.
La forme générique de la directive (:if:) est

(:if cond param:) contenu (:ifend:)
(:if cond param:) contenu (:else:) contenu (:ifend:)
(:if cond param:) contenu (:elseif cond param:) contenu (:ifend:)

où "cond" est une condition à tester, et "param" est un paramètre ou autre argument du test.

Écriture raccourcie

La balise (:if:) termine automatiquement la précédente, et on peut utiliser (:if:) au lieu de (:ifend:) :

(:if cond1:) cond1 est vraie (:if:)
(:if cond1:) cond1 est vraie (:if cond2:) cond2 est vraie (:if:)

Cette ligne ci-dessus est identique à :

(:if cond1:) cond1 est vraie (:ifend:)(:if cond2:) cond2 est vraie (:ifend:)

Conditions prédéfinies

Les conditions prédéfinies par défaut dans Pm Wiki sont:

(:if name NOMDEPAGE:)
La page courante est nommée "NOMDEPAGE"
(:if group NOMDEGROUPE:)
Le groupe courant est nommé "NOMDEGROUPE"
(:if auth ACTION NomDePage:)
L'utilisateur peut effectuer telle ACTION pour la page Nom De Page?. ACTION peut être : read, edit, upload, attr ou admin. Nom De Page? est optionnel, s'il manque, il s'agit de la page en cours.
(:if authid:)
L'utilisateur actuel est authentifié
(:if true:)
Toujours inclure le texte
(:if false:)
Toujours exclure le texte (pareil qu'un commentaire)
(:if attachments:)
La page courante possède des fichiers joints
(:if date DATE1..DATE2]:)
La date courante est comprise dans l'intervalle de DATE 1? et DATE 2?. (Les dates ont la forme yyyy-mm-dd ou yyyymmdd.)
(:if date 2009-09-01:) vraie si c'est le 1er septembre 2009
(:if date 20090901..:) vraie si c'est après le 1er septembre
(:if date 20090901..20091231:) vraie si c'est entre 01/09 et 31/12
(:if enabled VARIABLE:)
vraie si la variable PHP, ou variable dans local/config.php ou un dans module, est définie et non-zéro.
(:if equal "CHAÎNE1" "CHAÎNE2":)
vraie si la CHAÎNE 1? est égale à la CHAÎNE 2?
(:if match REG_EXPRESSION:)
vraie si le nom de la page correspond à l'expression régulière
(:if exists NOMDEPAGE:)
vraie si NOMDEPAGE existe
(:if action ACTION:)
vraie si l'action actuelle est ACTION (peut être browse, edit, upload, diff, print, etc.)

Les formes négatives de conditions fonctionnent également.

(:if !attachments:)
Cette page ne possède pas de fichiers joints
(:if ! name NOMDEPAGE:)
(:if name !NOMDEPAGE:)
(:if name -NOMDEPAGE:)
Cette page n'est pas NOMDEPAGE

N'importe quel (:if:) termine automatiquement le précédent, ainsi les balises peuvent être facilement empilées:

    (:if auth read:)* Vous pouvez lire
    (:if auth edit:)* Vous pouvez éditer
    (:if auth upload:)* Vous pouvez télécharger
    (:ifend:)

Conditions imbriquées

Les conditions peuvent être imbriquées (depuis version 2.2.beta 66).

Les balises (:if:) imbriquées fonctionnent comme les blocs (:div:) imbriqués. Il est nécessaire d'ajouter un nombre aux if-else-endif correspondants :

(:if cond1:)
  cond1 est vraie
  (:if2 cond2:)
     cond1 et cond2 sont vraies
  (:else2:)
     cond1 est vraie, cond2 ne l'est pas
  (:if2end:)
(:else:)
  cond1 n'est pas vraie, cond2 est sans importance
(:ifend:)

Note: des espaces ont été ajoutés pour une meilleure lisibilité.

Utiliser des Jokers (métacaractères)

Le métacaractère * représente n'importe quel caractère, zéro, un ou plusieurs fois.
Le métacaractère ? représente n'importe quel caractère, exactement une fois.

Ces deux "jokers" peuvent être utilisés avec les conditions name et group dans les balises conditionnelles. Ainsi,

(:if name Blog.2009* :)
La page en cours est dans le Wiki Groupe? "Blog" et son nom commence par 2005.
(:if group PmWiki* :)
Le groupe en cours est Pm Wiki, ou commence par Pm Wiki, par exemple Pm Wiki Fr.
(:if name Profils.*,-Profils.Profils :)
La page est dans le groupe Profils, mais n'est pas Profils.Profils

Expressions conditionnelles combinées

Les conditions décrites dans cette page peuvent être combinées en expressions plus complexes avec les formes suivantes:

(:if expr EXPRESSION :)
(:if [ EXPRESSION ] :)
(:if ( EXPRESSION ) :)

Les conditions sont combinées par des opérateurs booléens et des crochets. Dans le tableau suivant, A et B sont soit des conditions.

ExpressionOperateurResultat
A and B
A && B
ETVRAIE si A et B sont vraies.
A or B
A || B
OUVRAIE si A ou B est vraie.
A xor BOU exclusifVRAIE si soit A, soit B est vraie, mais pas les deux.
! ANégationVRAIE si A n'est pas vraie.

Exemple

(:if [ name UnePage and group UnGroupe ]:)
est équivalent à (:if name UnGroupe.UnePage:)

Notes :

  • Les espaces autour des opérateurs et des crochets sont obligatoires.
  • Il n'y a pas de messages d'erreur en cas de fautes de syntaxe.
  • Utilisez des parenthèses et non des crochets pour les conditions internes d'une expression complexe.

L'expression suivante affichera le contenu seulement si l'utilisateur est administrateur, ou s'il est authentifié et la date est après le 2009-06-01 :

(:if [ auth admin || ( authid && date 2009-06-01.. ) ] :)

Créer des nouvelles conditions

Voir Cookbook:ConditionalMarkupSamples (en anglais).


<< Liens InterMap | Index de la documentation | Variables de page >>



Traduction de PmWiki.ConditionalMarkup
Page originale sur PmWikiFr.ConditionalMarkup - Référencé par

Dernières modifications:
PmWikiFr.ConditionalMarkup: 23/08/2009 à 01:55

PmWiki.ConditionalMarkup: 10/09/2011 à 18:08


D'autres actions ou possibilités :

Imprimer la page - Créer le fichier PDF - Consulter les statistiques - Dernières modifications du site
Consulter la page - Editer cette page - Parcourir l'historique - Joindre un fichier - Se connecter/Déconnecter -


Stéphane FONTAINE - -