Changes

m
Meilleure traduction du mot hook, capitaine
Line 12: Line 12:     
=Introduction=
 
=Introduction=
Les Hooks (hameçon en anglais) sont une fonctionnalité destinée aux développeurs, leur permettant d'ajouter du code personnalisé aux pages standards de Dolibarr sans avoir à modifier le ''core'' de Dolibarr. Contrairement au [[Système de Triggers]] (autre manière d'interagir avec le code de Dolibarr) qui sont liés aux événements de Dolibarr, les Hooks peuvent s'exécuter n'importe ou et à n'importe quel moment dès lors qu'ils ont été prévus dans le ''core'' de Dolibarr. Ce sont des points d'insertion dans le programme.
+
Les Hooks (crochet en anglais, dans le sens de détour) sont une fonctionnalité destinée aux développeurs, leur permettant d'ajouter du code personnalisé aux pages standards de Dolibarr sans avoir à modifier le ''core'' de Dolibarr. Contrairement au [[Système de Triggers]] (autre manière d'interagir avec le code de Dolibarr) qui sont liés aux événements de Dolibarr, les Hooks peuvent s'exécuter n'importe et à n'importe quel moment dès lors qu'ils ont été prévus dans le ''core'' de Dolibarr. Ce sont des points d'insertion dans le programme.
    
*Les Hooks sont actifs ou pas selon un contexte (souvent un contexte par module : par exemple "productcard" pour les produits, "invoicecard" pour les factures...). Pour trouver les Hooks existants faites une recherche pour "'''initHooks('''"
 
*Les Hooks sont actifs ou pas selon un contexte (souvent un contexte par module : par exemple "productcard" pour les produits, "invoicecard" pour les factures...). Pour trouver les Hooks existants faites une recherche pour "'''initHooks('''"
Line 18: Line 18:     
=Ajouter un hook pour permettre l'insertion de code=
 
=Ajouter un hook pour permettre l'insertion de code=
Pour implémenter un hook dans votre propre module (afin que votre module puisse être "hameçonné" par d'autres), vous devrez procéder en 2 étapes.
+
Pour implémenter un hook dans votre propre module (afin que votre module puisse être "crocheté", "détourné" par d'autres), vous devrez procéder en 2 étapes.
    
Ces étapes doivent êtres reproduites pour chaque script php de votre module où vous voulez implémenter des hooks.
 
Ces étapes doivent êtres reproduites pour chaque script php de votre module où vous voulez implémenter des hooks.
Line 71: Line 71:  
Note: Vous devrez refaire cette étape plusieurs fois si vous voulez ajouter plusieurs hooks à différent endroits de votre script.
 
Note: Vous devrez refaire cette étape plusieurs fois si vous voulez ajouter plusieurs hooks à différent endroits de votre script.
   −
Maintenant votre module devrait pouvoir être "hameçonné". Vous pouvez à présent suivre la procédure ci-dessous ( '''Implémenter un hook''' ) pour construire une fonction qui se raccrochera au hook  (permet aussi de tester que cela fonctionne).
+
Maintenant votre module devrait pouvoir exécuté des hooks d'autres origines. Vous pouvez à présent suivre la procédure ci-dessous ( '''Implémenter un hook''' ) pour construire une fonction qui se raccrochera au hook  (permet aussi de tester que cela fonctionne).
    
=Implémenter un Hook=
 
=Implémenter un Hook=
Line 85: Line 85:  
</syntaxhighlight>
 
</syntaxhighlight>
   −
Note: il est possible de trouver le contexte d'un module en rajoutant
+
Note: il est possible de trouver tous les contextes dans lequel vous êtes au sein d'une portion de code PHP en faisant
 
<syntaxhighlight lang="php">
 
<syntaxhighlight lang="php">
print('Module context: '.$object->context);
+
print('Module context: '.join(',', $object->contextarray));
 
</syntaxhighlight>
 
</syntaxhighlight>
(rajoutez ce bout de code dans le fichier php où réside l'appel des hooks, et supprimez le, une fois la valeur du contexte relevée).
+
(rajoutez ce bout de code dans le fichier PHP où réside l'appel des hooks, et supprimez le, une fois la valeur des contextes relevée).
 +
 
 +
Notez que le contexte '''all''' signifie que vous souhaitez que votre hook soit exécuté quel que soit le contexte. Le '''main''' signifie que vous voulez que votre hook soit exécuté pour n'importe quelle page Web, et '''cli''' signifie dans chaque script de ligne de commande (même si vous ne pouvez pas voir ces clés de contexte dans $object->contextarray).
    
[[File:warning.png]] Attention: N'oubliez pas de désactiver puis de réactiver votre module dans l'interface d'administration des modules (ou directement dans le "constructeur de module") afin que la modification soit prise en compte, car l'enregistrement qui relie les éléments du couple "module-hook" est géré en base de donnée; celle-ci n'étant mise à jour qu'au moment de la (ré)activation du module.
 
[[File:warning.png]] Attention: N'oubliez pas de désactiver puis de réactiver votre module dans l'interface d'administration des modules (ou directement dans le "constructeur de module") afin que la modification soit prise en compte, car l'enregistrement qui relie les éléments du couple "module-hook" est géré en base de donnée; celle-ci n'étant mise à jour qu'au moment de la (ré)activation du module.
Line 165: Line 167:       −
=Liste des Contexts disponibles dans Dolibarr=
+
=Liste des Contextes disponibles dans Dolibarr=
 
Pour trouver les contextes disponibles dans Dolibarr, la procédure est similaire aux hooks.
 
Pour trouver les contextes disponibles dans Dolibarr, la procédure est similaire aux hooks.
 
Faites une recherche sur  "'''initHooks('''" dans le code source et vous trouverez facilement tous les contextes déjà implémentées.
 
Faites une recherche sur  "'''initHooks('''" dans le code source et vous trouverez facilement tous les contextes déjà implémentées.
3

edits