Gestion des conditions dans les templates

Dans les modèles (templates) de convention, d’avenant et de mail, il est possible d’afficher du contenu en fonction de conditions. L’éditeur utilise une syntaxe simplifiée ($IF, $ELSE, $ENDIF…) qui est convertie en expressions FreeMarker avant la génération du document.

Cette syntaxe s’applique aux templates éditables depuis l’interface :

  • Paramétrage global > Templates de convention (convention et avenant)

  • Paramétrage global > Template de mails

Les fichiers HTML fournis par défaut dans l’application utilisent directement la syntaxe FreeMarker (<#if>, <#else>, </#if>). La syntaxe $IF décrite ici concerne les modèles personnalisés saisis dans l’éditeur enrichi.

Principe de fonctionnement

Avant le traitement FreeMarker, l’application convertit les marqueurs simplifiés :

Marqueur saisi Équivalent FreeMarker

$IF

<#if

` $FI` (espace + $FI)

> (ferme l’ouverture de la condition)

$ELSE

<#else>

$ENDIF

</#if>

`$EQUALS `

==" (comparaison d’égalité sur une chaîne)

??$

??> (test d’existence / de non-vacuité)

Utilisez uniquement des guillemets droits (' ou "), pas de guillemets courbes, dans les expressions de condition.

Structure d’une condition simple

$IF (convention.creditECTS != '') $FI
Contenu affiché si la condition est vraie.
$ELSE
Contenu affiché si la condition est fausse.
$ENDIF

Ce bloc est converti en :

<#if (convention.creditECTS != '')>
Contenu affiché si la condition est vraie.
<#else>
Contenu affiché si la condition est fausse.
</#if>

Le marqueur $FI (précédé d’un espace) ferme l’ouverture de la condition en ajoutant le caractère >. Il ne remplace pas $ENDIF, qui clôture le bloc conditionnel.

$ELSEIF n’est pas pris en charge. Pour plusieurs cas, imbriquez des blocs $IF / $ENDIF ou utilisez des conditions composées (voir ci-dessous).

Test d’existence d’une variable

Pour vérifier qu’une variable est renseignée, utilisez le suffixe ??$ à la place de $FI :

$IF etudiant.nom??$Bonjour ${etudiant.nom} !$ELSE Utilisateur inconnu $ENDIF

Ce bloc est converti en :

<#if etudiant.nom??>Bonjour ${etudiant.nom} !<#else> Utilisateur inconnu </#if>

Comparaison d’égalité avec $EQUALS

Pour comparer une variable à une valeur textuelle, utilisez le marqueur $EQUALS :

$IF convention.interruptionStage $EQUALS Oui $FI
Le stage comporte une interruption.
$ENDIF

Opérateurs disponibles

Les expressions entre $IF et $FI (ou avant ??$) suivent la syntaxe FreeMarker.

Opérateur Signification Exemple

==

Égal à

$IF (convention.deviseGratification == 'euros') $FI

!=

Différent de

$IF (convention.creditECTS != '') $FI

>, <

Supérieur, inférieur

$IF (convention.montantGratification?number > 0) $FI

>=, ⇐

Supérieur ou égal, inférieur ou égal

$IF (convention.nbJoursHebdo?number >= 5) $FI

&&

ET logique

$IF (convention.montantGratification != '' && convention.deviseGratification != '') $FI

`

`

OU logique

`$IF (convention.interruptionStage == 'Oui'

Les mots-clés AND et OR ne sont pas reconnus. Utilisez && et ||.

Variables utilisables

Les conditions s’appuient sur les mêmes variables que l’insertion de paramètres ${…​}. Les principaux objets disponibles sont :

Objet Exemples de propriétés

convention

creditECTS, montantGratification, dateDebutStage, sujetStage, interruptionStage…

etudiant

nom, prenom, mail, numEtudiant…

centreGestion

nomCentre, nomViseur, mail, codeUniversite…

structure

raisonSociale, numeroSiret, commune, paysLibelle…

contact

nom, prenom, mail, fonction…

enseignant

nom, prenom, mail, affectationLibelle…

avenant

sujetStage, motifAvenant, dateDebutStage…

signataire

nom, prenom, fonction, mail…

La liste complète des paramètres disponibles est affichée dans l’écran d’édition des templates de convention (Liste des paramètres).

Exemples courants

Afficher un bloc uniquement si une gratification est prévue

$IF (convention.montantGratification != '') $FI
Gratification : ${convention.montantGratification} ${convention.deviseGratification}
$ENDIF

Afficher un texte différent selon la présence de crédits ECTS

$IF (convention.creditECTS != '') $FI
Stage évalué à ${convention.creditECTS} crédits ECTS.
$ELSE
Stage sans crédits ECTS.
$ENDIF

Personnaliser un mail selon l’étudiant

$IF etudiant.prenom??$Bonjour ${etudiant.prenom},$ELSE Bonjour,$ENDIF
Votre convention de stage est en attente de validation.

Bonnes pratiques

  • Testez le rendu via la prévisualisation PDF (templates de convention) ou l’envoi de mail de test (templates de mails).

  • Vérifiez le comportement lorsque la variable testée est vide : une chaîne vide '' n’est pas toujours équivalente à une variable absente (??$).

  • Placez chaque marqueur ($IF, $FI, $ELSE, $ENDIF) de façon explicite ; un $ENDIF manquant provoque une erreur à la génération.

  • Pour les comparaisons numériques, utilisez le qualificateur FreeMarker ?number si la variable est stockée sous forme de texte.

Limites connues

  • $ELSEIF n’est pas supporté.

  • La syntaxe $LIST / $ENDLIST mentionnée dans certains exemples historiques de paramètres n’est pas convertie par l’application : pour parcourir une liste, préférez les boucles FreeMarker natives (<#list>) dans les templates techniques, ou structurez le contenu autrement dans les modèles éditables.