<sect4 id="config-LSattr_html_jsonCompositeAttribute">
  <title>LSattr_html_jsonCompositeAttribute</title>
  <para>Ce type est utilisé pour la gestion des attributs dont les valeurs sont
  des dictionnaires de valeurs encodées aux formats <emphasis>JSON</emphasis>.</para>

  <programlisting linenumbering="unnumbered">
<citetitle>Exemple de valeur gérée</citetitle>
<![CDATA[{"component1": "value1", "component2": "value2", "component3": "value3"}]]>
</programlisting>

  <para>Le principe est que ces dictionnaires contienent plusieurs composants référencés
  par leur clé et stockant une valeur dont le type peut être un texte libre ou
  bien être issue d'une liste déroulante configurable selon le même principe que
  le type d'attribut &LSattr_html_select_list;.</para>

  <programlisting linenumbering="unnumbered">
<citetitle>Structure</citetitle>...
<![CDATA['html_options' => array (
   'components' => array (
     '[clé composant 1]' => array (
       'label' => '[Label du composant]',
       'help_info' => '[Message d'aide sur le composant]',
       'type' => '[Type de la valeur stocké]',
       'required' => [Booléen],
       'multiple' => [Booléen],
       'check_data' => => array (
         // Régle de vérification syntaxique des données saisies
       ),
     ),
     '[clé composant 2]' => array (
       'label' => '[Label du composant 2]',
       'type' => 'select_list',
       'required' => [Booléen],
       'options' => array (
         [Configuration équivalente à un attribut LSattr_html_select_list]
       )
     ),
     [...]
   ),
   'fullWidth' => [booléen],
),]]>
...
</programlisting>

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

<varlistentry>
  <term>components</term>
  <listitem>
    <para>Tableau associatif obligatoire contenant en valeur clé, l'identifiant des
    composants, correspondant à la clé dans le dictionnaire <emphasis>JSON</emphasis>,
    et en valeurs associés, la configuration du composant.</para>

<variablelist>
  <varlistentry>
    <term>label</term>
    <listitem>
      <simpara>Le label du composant.</simpara>
    </listitem>
  </varlistentry>

  <varlistentry>
    <term>help_info</term>
    <listitem>
      <simpara>Message d'aide sur le composant (affiché uniquement en mode édition).
      </simpara>
    </listitem>
  </varlistentry>

  <varlistentry>
    <term>type</term>
    <listitem>
      <simpara>Le type de valeur du composant. Les types possibles sont
      <literal>text</literal> ou <literal>select_list</literal> pour respectivement
      soit une valeur saisie librement, soit une valeur sélectionnée parmis une liste
      déroulante.</simpara>
    </listitem>
  </varlistentry>

  <varlistentry>
    <term>options</term>
    <listitem>
      <simpara>Dans le cadre d'un composant de type <literal>select_list</literal>, cela
      correspond à la configuration de la liste déroulante. Cette configuration utilise la
      même syntaxe de configuration que celle du type d'attribut &LSattr_html_select_list;
      et son paramètre <literal>html_options</literal>.</simpara>
    </listitem>
  </varlistentry>

  <varlistentry>
    <term>multiple</term>
    <listitem>
      <simpara>Booléen définissant si ce composant peut stocker plusieurs valeurs (Défaut :
      <emphasis>Faux</emphasis>).</simpara>
    </listitem>
  </varlistentry>

  <varlistentry>
    <term>required</term>
    <listitem>
      <simpara>Booléen définissant si ce composant doit obligatoirement être défini (Défaut :
      <emphasis>Faux</emphasis>).</simpara>
    </listitem>
  </varlistentry>

  <varlistentry>
    <term>check_data</term>
    <listitem>
	  <simpara>Tableau associatif contenant les règles de vérification syntaxique
	  des données du composant. Ces règles sont configurables de la même manière
	  que les celles des valeurs attributs.
	  <link linkend='config-LSattribute-check-data'>Voir la section concernée.</link>
	  </simpara>
    </listitem>
  </varlistentry>
</variablelist>

  </listitem>
</varlistentry>

<varlistentry>
  <term>fullWidth</term>
  <listitem>
    <simpara>Booléen permettant de définir si l'affichage dans le formulaire doit se faire
    sur toute la largeur disponible de la page (Défaut : <emphasis>Faux</emphasis>).</simpara>
  </listitem>
</varlistentry>

</variablelist>
</sect4>
