<sect2 id="config-LSattribute">
  <title>Configuration des attributs</title>
  <para>Cette section décrit les options de configuration des attributs des
  &LSobjects;. Les attributs sont définis dans le tableau associatif
  <varname>attrs</varname> de la configuration des &LSobjects;. Dans ce tableau,
  les clé les noms des attributs et les valeurs liés sont la configuration des
  attributs.</para>
  
  <warning><simpara>Contrairement à ce qui existe dans le standard LDAP, les
  noms des attributs sont sensibles à la casse. Il faut que le nom des attributs
  dans &LdapSaisie; soient scrupuleusement les mêmes que ceux retourné par
  &netldap;</simpara></warning>
  
<programlisting linenumbering="unnumbered">
<citetitle>Structure</citetitle>...
<![CDATA['attrs' => array (
  /* ----------- start -----------*/
  'attr1' => array (
    'label' => '[label de l'attr1',
    'displayAttrName' => '[booleen]',
    'help_info' => '[Message d'aide sur l'attribut attr1]',
    'ldap_type' => 'ldaptype1',
    'ldap_options' => array(
      // Options LDAP liées au type LDAP de l'attribut
    ),
    'html_type' => 'htmltype1',
    'html_options' => array(
      // Options HTML liées au type HTML de l'attribut
    ),
    'no_value_label' => '[No set value label]',
    'multiple' => 0,
    'required' => 1,
    'generate_function' => 'fonction1',
    'generate_value_format' => '[LSformat]',
    'default_value' => 'valeur1',
    'check_data' => array (
      // Régle de vérification syntaxique des données saisies
    ),
    'validation' => array (
      // Règle de vérification d'intégrité des données saisies
    ),
    'rights' => array(
      'LSprofile1' => 'droit1',
      'LSprofile2' => 'droit2',
      ...
    ),
    'view' => 1,
    'form' => array (
      'create' => 1,
      'modify' => 0,
      ...
    ),
    'dependAttrs' => array(
      // Attributs en dépendance
    ),
    'onDisplay' => 'fonction2'
    
    'before_modify' => 'function1',
    'after_modify' => 'function2'
  ),
  /* ----------- end -----------*/
  ...
);]]>
...
</programlisting> 
  
<!-- Début Paramètres Configuration -->  
<variablelist>
<title>Paramètres de configuration</title>

<varlistentry>
  <term>label</term>
  <listitem>
    <simpara>Le label de l'attribut.</simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>displayAttrName</term>
  <listitem>
    <simpara>Booléen définissant si le nom de l'attribut doit être affiché en
    préfixe du message d'aide (paramètre <parameter>help_info</parameter>).</simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>help_info</term>
  <listitem>
    <simpara>Message d'aide qui sera affiché dans une bulle d'aide à côté du
    nom de l'attribut dans les formulaires.</simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>ldap_type</term>
  <listitem>
    <simpara>Le type LDAP de l'attribut.
    <link linkend='config-LSattr_ldap'>Voir la section concernée.</link></simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>ldap_options</term>
  <listitem>
    <simpara>Tableau associatif contenant les paramètres de configuration du
    type LDAP de l'attribut.
    <link linkend='config-LSattr_ldap'>Voir la section concernée.</link></simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>html_type</term>
  <listitem>
    <simpara>Le type HTML de l'attribut.
    <link linkend='config-LSattr_html'>Voir la section concernée.</link></simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>html_options</term>
  <listitem>
    <simpara>Tableau associatif contenant les paramètres de configuration du
    type HTML de l'attribut.
    <link linkend='config-LSattr_html'>Voir la section concernée.</link></simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>no_value_label</term>
  <listitem>
    <simpara>Label affiché lorsque l'attribut n'a pas de valeur (facultatif).</simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>multiple</term>
  <listitem>
    <simpara>Booléen définissant si cet attribut peut stocker plusieurs valeurs.</simpara>
    <simpara>Valeurs possibles : <emphasis>0</emphasis> ou <emphasis>1</emphasis></simpara>
    <simpara>Valeur par défaut : <emphasis>0</emphasis></simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>required</term>
  <listitem>
    <simpara>Booléen définissant si cet attribut doit obligatoirement être
    défini.</simpara>
    <simpara>Valeurs possibles : <emphasis>0</emphasis> ou <emphasis>1</emphasis></simpara>
    <simpara>Valeur par défaut : <emphasis>0</emphasis></simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>generate_function</term>
  <listitem>
    <simpara>Nom de la fonction permettant de générer la valeur de l'attribut.
    Cette fonction sera éxecutée, en passant en premier paramètre, l'objet 
    &LSobject; courant.</simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>generate_value_format</term>
  <listitem>
    <simpara>&LSformat; permettant la génération de l'attribut.</simpara>
    <note><simpara>Cette méthode de génération est utilisée uniquement si aucune fonction de génération
    de la valeur n'est définie (paramètre <parameter>generate_function</parameter>).</simpara></note>
  </listitem>
</varlistentry>

<varlistentry>
  <term>default_value</term>
  <listitem>
    <simpara>Valeur par défaut de l'attribut.</simpara>
    <simpara>Valeurs possibles : <emphasis>0</emphasis> ou <emphasis>1</emphasis></simpara>
    <note><simpara>Cette valeur est également utilisée dans le cadre de la génération automatique
    de la valeur de l'attribut si aucune autre méthode n'est disponible (via une fonction ou un &LSformat;).</simpara></note>
  </listitem>
</varlistentry>

<varlistentry>
  <term>check_data</term>
  <listitem>
    <simpara>Tableau associatif contenant les règles de vérification syntaxique
    des données de l'attribut.<link linkend='config-LSattribute-check-data'>Voir
    la section concernée.</link></simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>validation</term>
  <listitem>
    <simpara>Tableau associatif contenant les règles de vérification d'intégrité
    des données de l'attribut.<link linkend='config-LSattribute-validation'>Voir
    la section concernée.</link></simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>rights</term>
  <listitem>
    <simpara>Tableau associatif dont les clés sont les noms des &LSprofiles; ayant
    des droits sur cet attribut et les valeurs associées sont les droits
    correspondants. La valeur des droits d'un &LSprofile; peut être
    <literal>r</literal> pour le droit de lecture ou <literal>w</literal> pour
    le droit de lecture-écriture. Par défaut, un &LSprofile; n'a aucun droit.</simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>view</term>
  <listitem>
    <simpara>Booléen définissant si l'attribut est, ou non, affiché lors de la
    visualisation des objets du type courant.</simpara>
    <simpara>Valeurs possibles : <emphasis>0</emphasis> ou <emphasis>1</emphasis></simpara>
    <simpara>Valeur par défaut : <emphasis>0</emphasis></simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>form</term>
  <listitem>
    <simpara>Tableau associatif dont les clés sont les noms des &LSforms; et les
    valeurs associées la définition de l'affichage dans ce &LSform;. Si cette
    valeur vaut <emphasis>0</emphasis>, alors l'attribut sera lecture-seule et si
    cette valeur vaut <emphasis>1</emphasis>, cet attribut sera affiché en
    lecture-écriture.</simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>dependAttrs</term>
  <listitem>
    <simpara>Tableau associatif listant les attributs dépendants de celui-ci. 
    Les attributs listés ici seront regénérés lors de chaque modification
    de l'attribut courant. Cette génération sera effectué avec la fonction
    définie dans le paramètre <varname>generate_function</varname> de
    l'attribut.</simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>onDisplay</term>
  <listitem>
    <simpara>Nom ou liste de nom des fonctions retournant les valeurs d'affichages
    de l'attribut. Si c'est une liste, chacune des fonctions seront executée les
    unes après les autres. Ces fonctions seront éxecutées, en passant en premier
    paramètre, le tableau des valeurs de l'objet.</simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>before_modify</term>
  <listitem>
    <simpara>Nom de la fonction qui sera exécutée avant toutes modifications de
    la valeur de l'attribut.<link linkend="config-LSattribute-triggers">Voir la
    section concernée</link></simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>after_modify</term>
  <listitem>
    <simpara>Nom de la fonction qui sera exécutée après toutes modifications de
    la valeur de l'attribut.<link linkend="config-LSattribute-triggers">Voir la
    section concernée</link></simpara>
  </listitem>
</varlistentry>

</variablelist>  
  &conf-LSattribute-LSattr_ldap;
  &conf-LSattribute-LSattr_html;
  
  &conf-LSattribute-check-data;
  &conf-LSattribute-validation;
  &conf-LSattribute-triggers;
  
</sect2>