<sect2 id="config-LSobject-customActions">
  <title>customActions</title>
  <para>Cette section décrit la manière de configurer les actions personnalisées exécutables
  sur les &LSobjects; appelées &customActions;.</para>

<programlisting>
<citetitle>Structure</citetitle>
<![CDATA[$GLOBALS['LSobjects']['[nom du type d'LSobject]']['customActions'] = array (
  'action1' => array(
    'label' => '[label l'action]',
    'hideLabel' => '[booléen]',
    'helpInfo' => '[label d'aide]',
    'icon' => '[nom de l'icône de l'action]',
    'function' => '[fonction à exécuter]',
    'question_format' => '[LSformat de la question de confirmation]',
    'onSuccessMsgFormat' => '[LSformat du message à afficher en cas de succès de l'action]',
    'disableOnSuccessMsg' => '[booléen]',
    'noConfirmation' => '[booléen]',
    'redirectToObjectList' => '[booléen]',
    'noRedirect' => '[booléen]',
    'rights' => array(
      'LSprofile1',
      'LSprofile2',
      ...
    )
  )
);]]>
</programlisting>

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

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

<varlistentry>
  <term>hideLabel</term>
  <listitem>
    <simpara>Cache le label dans le bouton de l'action.</simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>helpInfo</term>
  <listitem>
    <simpara>Le label du message d'aide qui sera affiché au survole du bouton de l'action.</simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>icon</term>
  <listitem>
    <simpara>Nom de l'îcone à afficher dans le bouton de l'action. Ce nom correspond
    au nom du fichier de l'image (sans l'extention) qui devra se trouver dans le
    dossier <emphasis>src/images/[nom du theme d'images]/</emphasis> ou dans le dossier
    <emphasis>src/local/images</emphasis>.</simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>function</term>
  <listitem>
    <simpara>Le nom de la fonction à exécuter qui implémente l'action personnalisée
    Cette fonction prendra en seule paramètre le &LSobject; sur lequel l'action devra
    être exécutée et retournera <emphasis>True</emphasis> en cas de succès ou
    <emphasis>False</emphasis> en cas d'échec d'exécution de la fonction.</simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>question_format</term>
  <listitem>
    <simpara>Le &LSformat; de la question de confirmation d'exécution de l'action.
    Ce &LSformat; sera composé à l'aide du nom de l'objet.</simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>onSuccessMsgFormat</term>
  <listitem>
    <simpara>Le &LSformat; du message à afficher en cas de succès d'exécution de
    l'action. Ce &LSformat; sera composé à l'aide du nom de l'objet.</simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>disableOnSuccessMsg</term>
  <listitem>
    <simpara>Booléen permetant de désactiver le message afficher en cas de succès
    d'exécution de l'action.</simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>noConfirmation</term>
  <listitem>
    <simpara>Booléen permetant de désactiver la confirmation de l'exécution de
    l'action.</simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>redirectToObjectList</term>
  <listitem>
    <simpara>Booléen permetant de rediriger l'utilisateur vers la liste des objets
    plutôt que sur la fiche de l'objet après l'execution de l'action.</simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>noRedirect</term>
  <listitem>
    <simpara>Booléen permetant de désactiver la redirection de l'utilisateur après
    l'execution de l'action. Cela permet à la fonction de définir son propre fichier
    de template de retour et donc d'afficher une page personnalisable.</simpara>
  </listitem>
</varlistentry>

<varlistentry>
  <term>rights</term>
  <listitem>
    <simpara>Tableau contenant la liste des noms des &LSprofiles; ayant le droit
    d'exécuter cette action.</simpara>
  </listitem>
</varlistentry>

</variablelist>

<sect3 id="config-LSobject-customActions-writing">
    <title>Ecriture d'une fonction implémentant une customAction</title>
    <para>Une fonction implémentant une <emphasis>customAction</emphasis> se déclare de
    la manière suivante :
    <programlisting linenumbering="unnumbered"><![CDATA[
/*
 * Ma fonction implémentant ma customAction
 *
 * Paramètre :
 *     - $object : Le LSobject sur lequel mon action doit être exécutée
 *
 * Valeurs retournées :
 *     - True : Tout s'est bien passé
 *     - False : Une erreur est survenue
 */
function maFonction ($object) {

  // Actions

}
    ]]></programlisting>
Cette fonction doit prendre pour seul paramètre, le &LSobject; sur lequel l'action
personnalisée doit être exécutée et doit retourner soit <literal>True</literal> si
tout s'est bien passé, soit <literal>False</literal> en cas de problème.</para>

<note><simpara>Ces fonctions sont le plus couramment définies au sein d'&LSaddon;.</simpara></note>

</sect3>


</sect2>
