Les attributs énumérés peuvent être utilisés pour définir un ensemble fini de choix de valeurs pour un attribut. On distinguera les attributs énumérés simples (type “enum”) pour le choix d'une seule valeur parmi l'ensemble des choix, des attributs énumérés multiples (type “enumlist”) pour le choix de plusieurs valeurs possibles.
L'ensemble des valeurs est une suite de couples <clef>|<label> séparés par des virgules. Le label est le texte qui est présenté sur l'interface; la clef la valeur qui est stockée en base de données. On peut ainsi modifier les labels sans pour autant changer la clef. La suppression d'une clef implique que c'est directement la clef qui sera affichée (les valeurs en base de données ne sont pas supprimées).
Par défaut un menu de filtrage sur les valeurs de cet attribut est ajouté dans la barre du haut pour toutes applications dérivées de GENERIC.
Deux options sont disponibles pour les énumérés bmenu et system. Si bmenu égal no, le menu supplémentaire ne sera pas affiché. Si system égal yes, les valeurs définies seront écrasées par les nouvelles valeurs définies. Par défaut, les valeurs des énumérés une fois initialisées ne sont pas modifiables lors de la redéfinition d'une famille.
Par défaut les attributs énumérés sont présentés à l'édition par une liste déroulante pour les énumérés simples et une liste à sélection multiple pour les énumérés multiples.
Plusieurs formats de sélection sont possibles :
Le format sera décrit par l'option 'eformat'. Pour indiquer qu'un énuméré est multivalué on indiquera 'multiple=yes' dans les options.
Restriction: les énumérés multiples ne peuvent pas être utilisés dans les tableaux.
Pour les énumérés simples, si la valeur par défaut n'est pas spécifiée, c'est le premier choix qui est présenté. Si on veut donner la possibilité de ne rien choisir, il faut ajouter un élément qui a pour valeur espace (red|rouge, |sans avis). La sélection de 'sans avis' aura pour conséquence la suppression de la valeur de l'attribut.
| idattr (ou ID) | label (ou Nom) | type | phpfunc (ou ft) | options |
|---|---|---|---|---|
| TST_COLOR1 | ma couleur préférée | enum | red¦rouge,lightgreen¦vert,darkblue¦bleu foncé,yellow¦jaune | bmenu=no |
| TST_COLOR2 | la couleur du vase | enum | red¦rouge,lightgreen¦vert,darkblue¦bleu foncé,yellow¦jaune | bmenu=no¦eformat=hcheck |
| TST_COLOR3 | la couleur de la table | enum | red¦rouge,lightgreen¦vert,darkblue¦bleu foncé,yellow¦jaune | bmenu=no¦eformat=vcheck |
| TST_COLOR4 | aimez-vous le vert ? | enum | red¦rouge,green¦vert | bmenu=no¦eformat=bool |
| TST_COLOR5 | les couleurs de la fleur | enumlist | red¦rouge,lightgreen¦vert,darkblue¦bleu foncé,yellow¦jaune | bmenu=no |
| TST_COLOR6 | les couleurs de l'arbre | enumlist | red¦rouge,lightgreen¦vert,darkblue¦bleu foncé,yellow¦jaune | bmenu=no¦eformat=hcheck |
| TST_COLOR7 | les couleurs du ciel | enumlist | red¦rouge,lightgreen¦vert,darkblue¦bleu foncé,yellow¦jaune | bmenu=no¦eformat=vcheck |

La liste des choix peut aussi être fournie par une fonction PHP ce qui permet une réutilisabilité et une plus grande dynamique dans les choix proposés. Cette fonctionnalité est décrite dans le manuel de programmation.
etype=open
Les énumérés de type 'ouvert' permettent aux utilisateurs de rajouter des entrées dana la liste des choix possibles. Si l'utilisateur a le droit d'éditer le document il a le droit de rajouter une entrée dans l'énuméré. Par contre, il ne pourra pas l'enlever directement. Seul l'administrateur pourra supprimer/corriger les entrées de cet énuméré.
etype=free
Les énumérés de type 'libre' permettent aux utilisateurs de choisir un autre choix que ceux proposés. Ce choix libre n'est pas ajouté à la liste des entrées.
Pour créer ou modifier les énumérés avec une une interface Web, il faut :
Il est aussi possible de créer des sous-listes dans l'énumération grâce à l'interface web. Il suffit pour cela:
Ce fichier contient un exemple de famille utilisant des attributs énumérés.
Vous pouvez suivre les instructions de cette page pour importer cette famille dans Freedom.
Si votre champ enum comporte de nombreuses entrées, cette macro OOo vous aidera à créer votre champ.
Le texte peut être traduit. S'il contient le caractère ”,” ou ”.”, alors il faut précéder ce caractère de ”/”.