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) :
-
.
(point) : voir les énumérés multi-niveaux
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
- Midi-Pyrénées
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
).