4.2.10.6 Définition de valeurs d'énumérés

Les énumérés sont structurés sous la forme de couples clé/valeur. La valeur stockée en base de données est la clé, alors que l'utilisateur voit la valeur correspondante.

Les labels peuvent ainsi être traduits, tout en n'altérant pas le stockage en base.

Lors de la Déclaration de familles, il est possible de définir des couples de clé/valeur au moyen de la syntaxe [cle1]|[label 1],[cle2]|[label 2],….

Pour chaque clé définie par ce moyen :

  • si la clé existe déjà pour cet énuméré, le label correspondant est mis à jour,
  • si la clé n'existe pas pour cet énuméré, elle est ajoutée.

4.2.10.6.1 Restrictions sur la valeur des clés

Lors de la composition des clés, il est interdit d'utiliser

  • les caractères :
    • " (guillemet double),
    • ' (apostrophe),
    • & (esperluette),
    • | (pipe)
  • les séquences :
    • -dot-,
    • -comma-

En outre, les valeurs suivantes doivent être échappées au moyen du caractère \ (anti-slash) :

4.2.10.6.2 Restrictions sur la valeur des labels

Lors de la composition des labels, il est interdit d'utiliser

  • les caractères :
    • | (pipe)
  • les séquences :
    • -dot-,
    • -comma-

En outre, les valeurs suivantes doivent être échappées au moyen du caractère \ (anti-slash) :

  • , (virgule)

4.2.10.6.3 Suppression de valeurs d'énumérés

Si l'énuméré est déclaré avec l'option system=yes, les définitions des énumérés est réinitialisé à chaque importation.

Si l'énuméré n'a pas cette option, il faut ajouter un ordre RESET;enums pour forcer la réinitialisation avec les nouvelles valeurs définies.

Note : La suppression d'une valeur dans la définition ne supprime pas les valeurs déjà affectés aux documents. Si un document a une valeur non répertoriée dans la définition de l'énuméré ce sera cette valeur (brute) qui sera affichée car son ancien libellé aura été supprimé.

4.2.10.6.4 Énumérés multi-niveaux

Il est possible d'exprimer une arborescence des clés au moyen du séparateur ..

Par exemple, l'énuméré france|France,france.midi|Midi-Pyrénées,france.midi.gers|Gers,france.midi.haute-garonne|Haute-Garonne,france.idf|Île-de-France,france.idf.paris|Paris définit l'arborescence :

  • France
    • Midi-Pyrénées
      • Gers
      • Haute-Garonne
    • Île-de-France
      • Paris

Du point de vue interne, c'est la clé 'finale' qui est stockée. Cela permet de modifier l'arborescence sans impacter les clés déjà stockées. Cependant, cela implique aussi que toutes les clés finales d'un énuméré doivent être non‑ambigües (par exemple, un|un,un.one|one,deux|deux,deux.one|one more n'est pas valide, car la clé one désigne à la fois un.one et deux.one).

4.2.10.6.5 Valeurs dynamiques

La définition d'un énuméré peut être fournie par une fonction PHP.

Cette fonction est alors exprimée de la même façon qu'une aide à la saisie : la caractéristique phpfile doit désigner un fichier publié dans le répertoire EXTERNALS et la fonction de définition de l'énuméré doit être définie dans le fichier référencé par phpfile.

Cette fonction doit retourner la définition sous la forme d'une chaîne de caractères comme décrit ci-dessus.

4.2.10.6.6 Localisation des énumérés

Les labels sont traduisibles. les clés de traductions sont composées sous la forme <FAMILYNAME>#<ATTRID>#<ENUMKEY> (exemple MY_FAMILY#my_color#yellow).

×