logo


Recherche Avancée

Non identifié
Non identifié
Nom

Mot de passe


Mot de passe oublié?

affichesi

L'instruction affichesi est une des instructions les plus utilisées, mais aussi une des instruction les plus complexes de Vitefait. Un mauvais choix des variables et des valeurs recherchées peut donner des résultats non voulus.

Affichesi est à l'origine prévu pour les cases à cocher.

Rappel sur les cases à cocher (et boutons radio)

Dans les cases à cocher les tests se font par « contient » il ne faut donc pas qu'une des valeurs contienne totalement une des autres valeurs:

exemple:

  • test:oui quand il fait beau/oui ---> quand test contient «oui quand il fait beau» les deux cases seront cochées (la dernière pour un bouton radio). Il faut donc préférer utiliser par exemple les majuscules pour éviter ceci
  • test: oui quand il fait beau/Oui ----> quand test contient «oui quand il fait beau» seule la première case sera cochée car «oui quand il fait beau» ne contient pas « Oui » avec un O majuscule.
Affichesi dynamique

un affichesi dynamique est géré par le serveur à chaque envoi puis par un script Javascript à chaque fois qu'une case est cochée. Il ne s'applique qu'aux questions « radio » ou « coche », ces questions doivent obligatoirement être définies avant l'affichesi.

Dans l'exemple test:oui quand il fait beau/oui le serveur affiche ou non en fonction du contenu le script Javascript en fonction du numéro de case cochée. Le mauvais codage vu dans l'exemple précédent pourra donc donner des résultats différents entre l'envoi par le serveur et le script dynamique. En revanche l'exemple 2 fonctionnera normalement.

Le codage d'un affichesi dynamique se fait de la manière suivante:

##affichesi//question//2 ---> la deuxième coche (ou bouton radio) est cochée

##affichesi//question//2//4 ---> la deuxième ou quatrième coche est cochée

ATTENTION: si la question est définie comme cle, il faut penser à la préfixer on l'appelera donc k_question. Utilisez de préfrence pour les clés l'option cleSansPrefixe pour ne pas vous retrouver face à ce problème.

Affichesi statique

Un affichesi statique n'est géré que par le serveur à chaque envoi. Il peut s'appliquer à tout type de question et les questions peuvent être situées après l'affichesi. Il répond aux même règles « contient » évoquées précédemment.

Exemple:

##affichesi//utilisateur//toto ---> s'affichera pour tous les utilisateurs contenant la chaine toto dans leur nom (aussi bien « toto » que « toto1 » ...

##affichesi//valeur//1 ---> s'affichera pour toutes les valeurs contenant un 1 (1, 11, 12, ...,100, ...) pour pallier ce type de problème, on veut veut afficher que pour leur valeur 1, il suffit d'ajouter une question avec un test plus précis: qtest, non en formulaire, calcul avant visualisation:

if val.valeur == 1:

val.set(« qtest », « vrai »

et

##affichesi//qtest//vrai

bien sûr cela de faire des tests bien plus complexe et de déclencher des affichesi en fonction de ces tests.

paramètre nomduchamp_attribut_si

permet d'affecter des paramètres à l'ensemble affichesi

exemple:

val.set("bidon_attribut_si","class=maclasse")

note:
il est possible de faire un affichesi sur un champ qui n'est pas dans le formulaire le résultat de ce champ doit être du type string
instruction ##_affichesi
Cette instruction est identique à ##affichesi, la seule différence est que le bloc dépendant n'est pas indenté.

Rétroliens

Object actions
CPSSkins is Copyright © 2003-2005 by Jean-Marc Orliaguet.
CPS is Copyright © 2002-2005 by Nuxeo SARL.
Plone and its visual design is Copyright © 2000-2005 by Alexander Limi, Alan Runyan, Vidar Andersen.