From Grande Région

PmWikiFr: Affichage conditionnel

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 PmWiki 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 NomDePage. ACTION peut être : read, edit, upload, attr ou admin. NomDePage 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 DATE1 et DATE2. (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ÎNE1 est égale à la CHAÎNE2:
(: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 WikiGroupe "Blog" et son nom commence par 2005.:
(:if group PmWiki* :)
Le groupe en cours est PmWiki, ou commence par PmWiki, par exemple PmWikiFr.:
(: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 :

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 >>

Récupéré sur http://anamnese.online.fr/granderegion/index.php/PmWikiFr/ConditionalMarkup
Page mise à jour le 10 septembre 2011 à 17h40