Utiliser les Tags conditionnels

Il arrive souvent que vous ayez plusieurs modèles d'un même document, qui ne diffèrent que par certains détails. Vous pouvez bien évidemment configurer ces différents modèles sur Dendreo et simplement générer le bon en fonction de vos besoins, mais une autre solution existe et peut potentiellement vous faciliter grandement la vie en minimisant le nombre de modèles de document à gérer : les "tags conditionnels" !

Principe

Le principe des tags conditionnels sera très familier à toute personne qui a des compétences en programmation. Si ce n'est pas votre cas, ne vous inquiétez pas, vous allez vite comprendre ! ;)

L'idée est de faire une condition ("SI...") suivi d'une réalisation ("ALORS...").

Par exemple :

SI 
"la formation est e-learning"
ALORS AFFICHER
"Un ordinateur et une connexion internet sera nécessaire."
FIN DE CONDITION

Syntaxe

La condition doit se faire sur un tag existant dans Dendreo, la réalisation de la condition peut être n'importe quoi.

Une condition commence par un tag conditionnel, dont la syntaxe est {? TAG OPERATEUR CONDITION} et se finir par {/TAG}.

Voici l'application de l'exemple ci-dessous en syntaxe de tag pour un modèle de document ou d'email sur Dendreo :

{?adf_mode_organisation=E-learning}
Un ordinateur et une connexion internet sera nécessaire.
{/adf_mode_organisation}

Explications :

  • Toute ADF a un tag {adf_mode_organisation} qui retourne "E-learning", "Présentiel", "Mixte"... en fonction du mode d'organisation des Modules qui la composent
  • On utilise ce TAG {adf_mode_organisation}, et on rajoute un "?" au début pour le transformer en tag conditionnel
  • On ajoute ensuite un OPERATEUR, ici "=" pour indiquer le fait que l'on souhaite tester l'égalité, suivi enfin de la CONDITION à tester, ici "E-learning" (attention de renseigner exactement le résultat produit par Dendreo pour le tag, et non pas "Elearning" par exemple ici)
  • On écrit la réalisation de la condition que l'on souhaite afficher si la condition est remplie (ici "Un ordinateur et une connexion internet sera nécessaire.")
  • Enfin, on ferme la condition en utilisant le même TAG que celui de la condition, avec un "/" au début donc {/adf_mode_organisation}

Opérateurs

Les opérateurs possibles sont : >, >=, <, <=, =, ==, <>, !=

Les opérateurs de comparaison de taille <, <=, >, >= ne fonctionnent qu'avec des éléments chiffrés.

Les opérateurs de comparaison d'égalité = et == sont équivalents.

Les opérateurs <> et != sont équivalents et permettent de tester la non égalité.

Il est également possible de vérifier si un élément chiffré est ENTRE deux valeurs, avec la syntaxe 

{?element=[a;b]}

qui signifie "est-ce que l'élément est compris entre a et b, inclus ?". Les syntaxes =]a;b], =[a;b[ et =]a;b[ existent également pour exclure les bornes souhaitées, ainsi que la syntaxe inverse !=[a;b] et ses variantes. Plus d'infos sont disponibles ci-dessous.

Condition sans opérateur

Il est possible de faire une condition du type :

{?formateur_ent_raison_sociale}
Le formateur dépend d'une Entreprise
{/formateur_ent_raison_sociale}

C'est à dire une condition sans aucun opérateur. Cette syntaxe permet de vérifier l'existence du tag (valeur non nulle). Au final, la syntaxe {?element} est équivalent à la syntaxe {?element!=}.

Conditions imbriquées

Il est possible de tester plusieurs conditions à la suite, en les imbriquant les unes dans les autres. Cependant ceci ne fonctionne que pour des tests sur des tags différents. Par exemple vous pouvez faire :

{?adf_type=INTER} 
{?adf_duree_jours>1}
Un petit déjeuner est offert tous les matins !
{/adf_duree_jours}
{/adf_type}

pour afficher une phrase SI la formation est de type "INTER", ET SI elle dure plus d'un jour.

Double condition chiffrée 

Il est possible de tester une condition du type "SI x est compris entre y et z ALORS...", avec la syntaxe particulière suivante : {?TAG OPERATEUR [y;z] }.

Voici un exemple :

{?participant_note_test=[80;100]}
a réussi avec le grade de GRANDE DISTINCTION
{/participant_note_test}

Ici, en fonction d'une note reçue par le Participant (et stockée dans un champ personnalisé, non standard sur Dendreo), nous affichons une mention sur le diplôme généré par Dendreo.

On peut évidement combiner plusieurs conditions à la suite pour afficher la bonne phase en fonction de la note du Participant :

{?participant_note_test=[70;80[}
a réussi avec le grade de DISTINCTION
{/participant_note_test}
{?participant_note_test=[80;100]}
a réussi avec le grade de GRANDE DISTINCTION
{/participant_note_test}

Vous remarquerez dans l'exemple ci-dessus que nous avons écrit " [70;80[ " et non " [70;80] ". Ceci est possible, pour indiquer l'exclusion de 80 dans le test (comme en mathématiques, oui les souvenirs sont lointains ;) ) puisqu'à partir de la note 80 inclus, nous voulons écrire "GRANDE DISTINCTION". Nous aurions aussi pu écrire [70;79], et ce serait équivalent si la note que peut obtenir un Participant est forcément un entier. Cependant ce n'est pas équivalent si la note peut être 79.5 par exemple.

Il est aussi possible d'écrire {?participant_note_test!=[80;100]} (remarquez le != au lieu de =) pour tester la non égalité de la note avec la gamme 80-100, c'est à dire que la note serait soit inférieure à 80 (strictement), soit supérieur à 100 (strictement).

Condition de contenu (wildcard)

Il est possible de définir une condition sur le texte affiché par un tag  du type  "SI le tag x contient le mot y ALORS..." avec la syntaxe particulière suivante : {?TAG OPERATEUR=*MOT RECHERCHE*}. L'étoile ( * ) doit ici être entendue comme un caractère wildcard, c'est à dire qu'il faut lire la condition comme ' n'importe quoi ( * ), suivi de "MOT RECHERCHE", suivi de n'importe quoi ( * )'.

Voici un exemple :

{?module_intitule=*BTP*}
Prendre son équipement de protection individuel
{/module_intitule}

Ici, si l'intitulé du Module contient le mot "BTP", nous affichons une mention spécifique liée à de l'équipement que doivent prendre les Participants le jour de la formation. 

On peut évidement créer différentes conditions grâce aux opérateurs et différentes variations de la syntaxe: 

{?module_intitule=*CACES*} : Contient CACES quelque part
{?module_intitule!=*CACES*} : Ne contient pas CACES
{?module_intitule=CACES*} : Commence par CACES (CACES suivi de "n'importe quoi")
{?module_intitule=*CACES} : Finit par CACES ("n'importe quoi" suivi de CACES)
{?module_intitule!=CACES*} : Ne commence pas par CACES

Condition "OU"

Vous pouvez indiquer qu'une condition doit être égale à quelque chose OU quelque chose d'autre avec l'opérateur "|" dans le test de condition.

Par exemple la condition :

{?participant_prenom=Monique|Estelle}
Vous vous appelez Monique ou Estelle !
{/participant_prenom}

sera validée si le prénom du participant est "Monique" OU "Estelle".

Condition "ET"

Vous pouvez indiquer qu'une condition doit être égale à quelque chose  ET quelque chose d'autre avec l'opérateur "+" dans le test de condition.

Souvent cette condition est utilisée pour réaliser l'inverse d'une condition OU. 

Attention ! L'inverse de {?champ=*valeur_a*|*valeur_b*}
n'est pas {?champ!=*valeur_a*|*valeur_b*}
mais bien {?champ!=*valeur_a*+*valeur_b*}

Donc pour réaliser l'inverse de la condition du paragraphe précédent, vous devrez écrire :

{?participant_prenom!=Monique+Estelle} 
Vous ne vous appelez ni Monique, ni Estelle !
{/participant_prenom}

Celle-ci signifie que le prénom du participant est différent de "Monique" ET différent de "Estelle".

Pour aller plus loin

Notez que vous pouvez écrire une condition entre guillemets ("...") ou non, cela n'a pas d'importance (exemple {?adf_mode_organisation="E-learning"}.

Les conditions fonctionnent en paragraphe mais aussi "en ligne" c'est à dire que vous pouvez écrire :

La formation se déroule dans les locaux du centre de formation. {?adf_duree_jours>1} Un petit déjeuner est offert tous les matins !{/adf_duree_jours}. Merci d'apporter votre convocation imprimée.

Vous remarquerez ci-dessus que nous n'avons pas fait de saut de ligne avant la condition. Notez que ce fonctionnement n'est possible que pour les tags conditionnels, pas les tags de boucle qui nécessitent un saut de ligne, c'est à dire qu'ils doivent être dans leur propre paragraphe.

Notez que vous pouvez tout à fait inclure des images, des tableaux ou tout être élément entre le début et la fin d'une condition.

Enfin, notez qu'il n'y a pas, comme en programmation informatique, de syntaxe pour écrire "SINON", c'est à dire "SI ... ALORS ... SINON ... ". Pour faire un SINON il vous faut tout simplement écrire la condition inverse à votre première condition. Par exemple :

{?adf_duree_jours>1} 
La formation se déroule sur plusieurs jours.
{/adf_duree_jours}
{?adf_duree_jours=1} 
La formation se déroule sur une journée.
{/adf_duree_jours}

Boucles conditionnelles

Il est également possible de combiner un tag conditionnel avec un tag de boucle ! Le reste de cette page considère que vous êtes familier avec la syntaxe de boucles.

Principe

Vous pouvez aussi réaliser une boucle "conditionnelle", c'est à dire que seuls les éléments de la boucle remplissant une condition seront affichés dans la boucle. 

Voici un exemple : considérez cette Action de Formation avec 4 Participants, dont les présences sont hétérogènes.

Afficher tous les Participants et leur durée de présence :

{#participants} 
{participant_nom} : {participant_heures_presence} 
{/participants}

Résultat :

N'afficher que les Participants présents (donc avec une durée de présence > 0) :

{#participants:heures_presence>0} 
{participant_nom} : {participant_heures_presence} 
{/participants}

Résultat :

Syntaxe

La syntaxe est la suivante (sans espaces) :

{ # boucle : ELEMENT_A_TESTER OPERATEUR CONDITION }

- ELEMENT_A_TESTER : il s'agit du tag qui sera testé vs. la CONDITION. Attention, il s'agit du tag en relation avec la boucle, donc par exemple écrire

{#participants:heures_presence>0}

revient à tester le tag

{participant_heures_presence}  ( = {participant_i_heures_presence}, avec i=1,2,3,etc.)

pour chaque Participant de la boucle.

Attention : remarquez bien que la syntaxe est {#participants:heures_presence>0} et non {#participants:participant_heures_presence>0} !
Comme il s'agit d'une boucle de participants, Dendreo testera automatiquement le tag {participant_... + ...heures_presences}.

- OPERATEURS possibles : >, >=, <, <=, =, ==, <>, !=

{#participants:heures_presence>0} // supérieur 
{#participants:heures_presence>=0} // supérieur ou égal 
{#participants:heures_presence<0} // inférieur 
{#participants:heures_presence<=0} // inférieur ou égale 
{#participants:heures_presence=0} // égal 
{#participants:heures_presence==0} // égal 
{#participants:heures_presence<>0} // différent 
{#participants:heures_presence!=0} // différent

- CONDITION : Résultat exact qui sera testé. Vous pouvez mettre le résultat entre guillemets " " si vous le souhaitez, cela n'a pas d'importance.

Notez que vous pouvez aussi inclure un compteur explicitement si vous le souhaitez, donc par exemple

{#participants,i:heures_presence>0}

Boucle de lignes dans un tableau

La syntaxe pour les boucles de tableau est similaire, mais avec deux " # " dans le tag d'ouverture, et sans tag de fermeture :

{##participants:heures_presence>0}

Le tag de boucle peut être inclus n'importe où dans la ligne du tableau, cela n'a pas d'importance. 

Voici un exemple :

NOM
HEURES DE PRESENCE
{participant_nom}  {##participants:heures_presence>0}
{participant_heures_presence}

Equivalence

Les plus perspicaces d'entre vous auront sans doute remarqué qu'il est en fait équivalent d'écrire :

{#participants:heures_presence>0} 
{participant_nom} : {participant_heures_presence} 
{/participants}

et

{#participants} 
{?participant_heures_presence>0}
{participant_nom} : {participant_heures_presence} 
{/participant_heures_presence}
{/participants}

et c'est vrai ! :)

Exemples

Voici un exemple de Feuille d'émargement par jour qui permet de générer une feuille d'émargement pour chaque jour dont le nombre de colonnes de signature chaque jour s'adapte automatiquement en fonction du nombre de créneaux du jour. 
Cet article vous a-t-il aidé ? Merci ! votre avis compte énormément pour les équipes de Dendreo Nous n'avons pas pu enregistrer votre feed-back :( Pouvez-vous ressayer ?

Besoin d'aide supplémentaire ? Nous contacter Nous contacter