Création de boutons

From Dolibarr ERP CRM Wiki
Jump to navigation Jump to search

Pour chaque enregistrement, il est possible de créer des boutons et d'y associer des actions. On retrouvera par exemple des actions comme valider, désactiver, mettre en brouillon, etc.

Nous utiliserons, dans nos exemples, la possibilité d'activer ou désactiver un enregistrement.

Fichier class.php

Constantes

Au début du fichier, nous allons vérifier les différentes constantes et les valeurs attribuées.

1 	const STATUS_DRAFT = -1;
2 	const STATUS_DISABLED = 0;
3 	const STATUS_VALIDATED = 1;
4 	const STATUS_CANCELED = 9;


Création fonctions

On vient ensuite ajouter les fonctions

1 public function enable($user, $notrigger = 0)
2 	{
3 	    // Protection pour véfifier le statut de départ
4 		if ($this->status != self::STATUS_DISABLED) {
5 			return 0;
6 		}
7 		return $this->setStatusCommon($user, self::STATUS_VALIDATED, $notrigger, '');
8 	}

Choisir le statut

La fonction viendra modifier l'apparence des status :

public function LibStatut($status, $mode = 0)

Pour chaque statut, on peut y venir apposer un numéro de statut et donc une mise en forme particulière :

if ($status == self::STATUS_DRAFT) {
    $statusType = 'status1';
}


Voici une liste des statuts et de leur apparence (peut varier en fonction des thèmes et versions utilisées) :


Fichier _card.php

Création du bouton

Avec le module builder, un fichier _card.php est créé où on y retrouvera le commentaire suivant, en dessous duquel on pourra nos créations :

<source lang="php">// Buttons for actions</source>


Le code pour ajouter un bouton est le suivant :

1 if ($permissiontoadd) { // Vérification au niveau des permissions
2     if ($object->status == $object::STATUS_VALIDATED) { // Si notre statut est déjà validé, on affiche un bouton pour désactiver
3         print dolGetButtonAction('',$langs->trans('Disable'), 'default', $_SERVER['PHP_SELF'].'?id='.$object->id.'&action=disable&token='.newToken(), '', $permissiontoadd);
4     } else { // Si notre statut est désactivé on afficher un bouton pour le réactiver
5         print dolGetButtonAction('',$langs->trans('Enable'), 'default', $_SERVER['PHP_SELF'].'?id='.$object->id.'&action=enable&token='.newToken(), '', $permissiontoadd);
6     }
7 }

Appel de l'action

Dans le haut du fichier _card.php, on retrouvera le commentaire suivant :

/*
* Actions
*/


C'est à ce niveau que l'on va venir ajouter les appels de fonction, que nous avons mis dans la création de nos bouttons

 1 if ($action == 'enable' && $permissiontoadd) { // Si on choisit l'action enable et que nous en avons la permission
 2     $object->enable($object->fk_user_modif,0); // Nous appelons la fonction enable, qui se trouve dans notreobjet/class.php
 3     setEventMessages("", "Bénéficiaire activé", 'mesgs');
 4 }
 5 
 6 if ($action == 'disable' && $permissiontoadd) {
 7     if ($object->action_fin == null) { // On peut ajouter une condition et un message d'erreur pour bloquer la désactivation
 8     setEventMessages("", "Il faut ajouter une date de fin de l'action pour pouvoir désactiver un bénéficiaire", 'errors');
 9 }
10 else {
11     $object->disable($object->fk_user_modif,0);
12     setEventMessages("", "Bénéficiaire désactivé", 'mesgs'); // Ou bien ajouter un message pour indiquer la bonne marche des choses
13 }