<sect2 id="config-LSobject-LSform">
  <title>LSform</title>
  <para>Cette section décrit la manière de paramétrer les formulaires d'&LdapSaisie;
  pour un type &LSobject; donné. Pour chaque type d'&LSobject;, il faut configurer
  plusieurs formulaires correspondant aux vues gérées par &LdapSaisie; (création,
  modification, ...). Les formulaires se configurent par plusieurs biais :

<itemizedlist>

<listitem>
<para>Via la configuration des attributs : La configuration des attributs 
détermine la présence ou non des attributs dans les formulaires. Elle permet
également de définir si on souhaite bloquer leur présence en lecture seulement.
</para>
</listitem>

<listitem>
<para>Via les droits de l'utilisateur connecté sur les attributs de l'objet
à éditer : en fonction des droits de l'utilisateur sur un attribut, celui-ci
apparaîtra en lecture-écriture ou en lecture uniquement voir pas du tout.
</para>
</listitem>

<listitem>
<para>Via la configuration au niveau de chaque type d'&LSobject; : il y est 
possible de définir le comportement globale du formulaire comme la validation
via Ajax ou encore la disposition logique des attributs dans le formulaire.</para>

<programlisting>
<citetitle>Structure</citetitle>
<![CDATA[$GLOBALS['LSobjects']['[nom du type d'LSobject]']['LSform'] = array (
  'ajaxSubmit' => [booléen],
  'layout' => array (
    // Configuration de la disposition logique des attributs
  ),
  'dataEntryForm' => array (
    // Configuration des masques de saisie
  )

);]]>
</programlisting>

<variablelist>
<title>Paramètres de configuration</title>

<varlistentry>
  <term>ajaxSubmit</term>
  <listitem>
    <simpara>Booléen définissant si le formulaire sera envoyé via une requête
    Ajax plutôt qu'à travers un rafraîchissement de la page. Par défaut :
    <emphasis>VRAI</emphasis>.</simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>layout</term>
  <listitem>
    <simpara>Tableau contenant la configuration de l'affichage du formulaire :
    il est possible de définir la disposition des attributs dans le formulaire
    en les regroupant dans des onglets et en les faisant apparaître dans un
    ordre logique.<link linkend='config-LSobject-LSform-layout'>Voir la section
    concernée.</link></simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>dataEntryForm</term>
  <listitem>
    <simpara>Tableau contenant la configuration des masques de saisie : il est
    possible de définir des masques de saisie pour faire en sorte que lors de la
    création d'un objet, seul un certain nombre d'élements soit demandé à 
    l'utilisateur. <link linkend='config-LSobject-LSform-dataEntryForm'>Voir la 
    section concernée.</link></simpara>
  </listitem>
</varlistentry>

</variablelist>

</listitem>

</itemizedlist>  
</para>

<sect3 id="config-LSobject-LSform-layout">
<title>Configuration de l'affichage</title>

<para>La configuration des <emphasis>layout</emphasis> se situe dans la 
configuration des &LSobjects;, dans la variable <varname>layout</varname>
(<emphasis>$GLOBALS['LSobjects']['[nom du type d'LSobject]']['LSform']['layout']</emphasis>).
Cette variable est un tableau associatif dont la clé est l'identifiant de l'onglet
et dont la valeur associée est la configuration de l'onglet.
<programlisting>
<citetitle>Structure</citetitle>
<![CDATA[$GLOBALS['LSobjects']['[nom du type d'LSobject]']['LSform']['layout'] = array (
  'onglet1' => array(
    'label' => '[label de l'onglet]',
    'img' => 1, // Valeur possible 1 ou 0
    'args' => array (
      'arg1',
      'arg2',
      ...
    )
  ),
  ...
);]]>
</programlisting>

<variablelist>
<title>Paramètres de configuration</title>

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

<varlistentry>
  <term>img</term>
  <listitem>
    <simpara>Affiche ou non l'image d'un éventuel attribut de type HTML
    <link linkend="config-LSattr_html_image">LSattr_html_image</link>.</simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>args</term>
  <listitem>
    <simpara>Tableau associatif contenant une liste ordonnée des attributs qui
    apparaîtront dans l'onglet.</simpara>
  </listitem>
</varlistentry>

</variablelist>
</para>
<important><simpara>Lorsqu'un <emphasis>layout</emphasis> est défini, celui-ci
est <emphasis>"suivi à la lettre"</emphasis> pour l'affichage du &LSform;. 
Ainsi, si un attribut est défini dans la configuration de l'objet comme présent
dans le &LSform; courant, mais que celui-ci n'est pas présent dans le <emphasis>
layout</emphasis>, il ne sera pas du tout affiché.</simpara></important>
</sect3>

<sect3 id="config-LSobject-LSform-dataEntryForm">
<title>Configuration des masques de saisie</title>

<para>La configuration des masques de saisie (<emphasis>dataEntryForm</emphasis>) se situe dans la 
configuration des &LSobjects;, dans la variable <varname>dataEntryForm</varname>
(<emphasis>$GLOBALS['LSobjects']['[nom du type d'LSobject]']['LSform']['dataEntryForm']</emphasis>).
Cette variable est un tableau associatif dont la clé est l'identifiant du masque de saisie
et dont la valeur associée est sa configuration.
<programlisting>
<citetitle>Structure</citetitle>
<![CDATA[$GLOBALS['LSobjects']['[nom du type d'LSobject]']['LSform']['dataEntryForm'] = array (
  'masque1' => array(
    'label' => '[label du masque de saisie]',
    'disabledLayout' => [booleen], 
    'displayedElements' => array (
      'arg1',
      'arg2',
      ...
    ),
    'defaultValues' => array (
      'arg3' => [value],
      'arg4' => [value],
      ...
    )
  ),
  ...
);]]>
</programlisting>

<variablelist>
<title>Paramètres de configuration</title>

<varlistentry>
  <term>label</term>
  <listitem>
    <simpara>Le label du masque de saisie.</simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>disabledLayout</term>
  <listitem>
    <simpara>Active ou non les  <link linkend="config-LSobject-LSform-layout">layouts</link>
    pour ce masque de saisie.</simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>displayedElements</term>
  <listitem>
    <simpara>Tableau contenant la liste des attributs qui devront être saisie
    dans le masque de saisie.</simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>defaultValues</term>
  <listitem>
    <simpara>Tableau associatif contenant la liste des valeurs par défaut des
    attributs. Les valeurs multiples sont possibles en utilisant des
    tableaux.</simpara>
    <important><simpara>Les valeurs seront vue comme des valeurs retournées par
    le formulaire et non comme des valeurs des attribus LDAP eux-même. Ainsi 
    et par exemple, un attribut traité comme un booléen dans un formulaire pourra
    prendre comme valeur par défaut <emphasis>yes</emphasis> ou
    <emphasis>no</emphasis>.</simpara></important>
  </listitem>
</varlistentry>

</variablelist>
</para>
</sect3>


</sect2>