7. Les actions vers formulaires

Les liens vers les formulaires sont principalement dans les tableaux et formulaires de consultation d’objets.

7.1. Actions des tableaux

La surcharge des actions de tableaux se fait via les scripts sql/sgbd/objet.inc.php.

L’ajout d’actions se présente de cette façon :

<?php
    // Actions en coin ('corner') : ajouter
    $tab_actions['corner']['ajouter'] =
        array('lien' => 'form.php?obj='.$obj.'&amp;action=0',
              'id' => '&amp;advs_id='.$advs_id.'&amp;tricol='.$tricol.
                      '&amp;valide='.$valide.'&amp;retour=tab',
              'lib' => '<span class="om-icon om-icon-16 om-icon-fix add-16"
                          title="'._('Ajouter').'">'._('Ajouter').'</span>',
              'rights' => array('list' => array($obj, $obj.'_ajouter'),
                                  'operator' => 'OR'),
              'ordre' => 10,);

    // Actions à gauche ('left'): consulter
    $tab_actions['left']['consulter'] =
        array('lien' => 'form.php?obj='.$obj.'&amp;action=3'.'&amp;idx=',
              'id' => '&amp;premier='.$premier.'&amp;advs_id='.$advs_id.
                      '&amp;recherche='.$recherche1.'&amp;tricol='.$tricol.
                      '&amp;selectioncol='.$selectioncol.'&amp;valide='.
                      $valide.'&amp;retour=tab',
              'lib' => '<span class="om-icon om-icon-16 om-icon-fix
                        consult-16" title="'._('Consulter').'">'.
                        _('Consulter').'</span>',
              'rights' => array('list' => array($obj, $obj.'_consulter'),
                          'operator' => 'OR'),
              'ordre' => 10,);

    // Action sur la cinquième colonne de contenu
    $tab_actions['specific_content'][4] =
        array('lien' => 'form.php?obj='.$obj.'&amp;action=2'.'&amp;idx=',
              'id' => '&amp;premier='.$premier.'&amp;advs_id='.$advs_id.
                      '&amp;recherche='.$recherche1.'&amp;tricol='.$tricol.
                      '&amp;selectioncol='.$selectioncol.
                      '&amp;valide='.$valide.'&amp;retour=tab',
              'lib' => '<span class="om-icon om-icon-16 om-icon-fix
                        delete-16" title="'._('Consulter').'">'.
                        _('Consulter').'</span>',
              'rights' => array('list' => array($obj, $obj.'_consulter'),
                                'operator' => 'OR'),
              'ordre' => 10,);

?>

Plusieurs emplacements d’actions existent :

  • corner : actions dans la première cellule du tableau
  • left : action situées dans la première colonne, disponibles pour chaque élément du tableau
  • content : action sur le contenu du tableau
  • specific_content : action sur une colonne de contenu du tableau
../_images/actions-form.png

7.1.1. Les actions par défaut

Par défaut seules les actions ajouter et consulter sont disponibles depuis les tableaux.

7.1.2. Créer de nouvelles actions

La création d’actions pour un tableau particulier se fait depuis le répertoire sql/sgbd/.

Les actions doivent se définir dans les fichier objet.inc.php de la manière suivante:

<?php

$tab_actions['left']['modifier'] =
    array('lien' => 'form.php?obj='.$obj.'&amp;action=1'.'&amp;idx=',
          'id' => '&amp;premier='.$premier.'&amp;advs_id='.$advs_id.'&amp;recherche='.$recherche1.'&amp;tricol='.$tricol.'&amp;selectioncol='.$selectioncol.'&amp;valide='.$valide.'&amp;retour=tab',
          'lib' => '<span class="om-icon om-icon-16 om-icon-fix edit-16" title="'._('Modifier').'">'._('Modifier').'</span>',
          'rights' => array('list' => array($obj, $obj.'_modifier'), 'operator' => 'OR'),
          'ordre' => 20,);

?>

7.1.2.1. Définition de l’action

La première clé de $tab_actions permet choisir la position d’affichage:

  • corner pour les actions en coin;
  • left pour les actions de gauche.

Note

Depuis la version 4.3.0 d’openMairie, il est désormais possible d’afficher plusieurs actions dans le coin du tableau (au niveau de l’action ajouter).

La seconde clé de $tab_actions permet de définir la nouvelle action. Cette clé doit être différente de: ajouter, consulter, modifier et supprimer.

Les clés lien, id et lib s’utilise de la même manière qu’avant.

7.1.2.2. Définition du mode d’affichage en sous-tableau

La clé ajax permet d’indiquer si l’action doit être affichée en ajax ou non dans les sous-tableaux:

  • true, l’action utilisera la fonction ajaxIt();
  • false, l’action n’utilisera pas la fonction ajaxIt().

7.1.2.3. Définition de l’ordre d’affichage

La clé ordre permet de déterminer l’ordre d’affichage par rapport aux autres actions.

Chaque action dispose d’une valeur numérique permettant de définir sa place au sein d’une position. L’action numéro 1 s’affichera en premier, l’action numéro 10 s’affichera après les actions de numéro inférieur, etc.

Ordre des actions par défaut d’openMairie:

  • ajouter à pour ordre 10 dans la position corner;
  • consulter à pour ordre 10 dans la position left.

Si la position corner est sélectionnée:

  • 9, l’action s’affichera avant l’action ajouter;
  • 11, l’action s’affichera après l’action ajouter.

Si la position left est sélectionnée:

  • 9, l’action s’affichera avant l’action consulter;
  • 11, l’action s’affichera après l’action consulter.

7.1.2.4. Définition des droits d’affichage

La clé rights permet de définir le ou les droits nécessaires à l’utilisateur pour visualiser cette action. Cette clé est optionnelle. Si rights n’existe pas, tous les utilisateurs pourront visualiser cette action s’ils peuvent visualiser le tableau correspondant.

La clé list permet de définir le tableau des droits nécessaire.

La clé operator permet de définir l’opérateur utilisé pour pour vérifier les droits de la liste list:

  • OR, l’utilisateur doit avoir au moins un droit;
  • AND, l’utilisateur doit avoir tous les droits.

7.2. Actions du menu contextuel de la consultation

La configuration des actions du menu contextuel des formulaires en consultation se fait via les scripts sql/sgbd/objet.form.inc.php

Dans ces scripts, peuvent être surchargés, la liste des champs (ordre ou champs affichés), requêtes sql permettant de remplir les widget de formulaires ainsi que les actions du menu contextuel.

L’ajout d’une action se présente de cette façon :

<?php
$portlet_actions['edition'] = array(
    'lien' => '../pdf/pdflettretype.php?obj=om_utilisateur&amp;idx=',
    'id' => '',
    'lib' => '<span class="om-prev-icon om-icon-16 om-icon-fix pdf-16"
                     title="'._('Edition').'">'._('Edition').'</span>',
    'ajax' => false,
    'ordre' => 21,
);
?>