dolibarr-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Dolibarr-dev] [dolibarr] Ajout de CustomFields module et correction


From: Laurent Destailleur (eldy)
Subject: Re: [Dolibarr-dev] [dolibarr] Ajout de CustomFields module et correction de bugs pour PayPal et autres (#20)
Date: Sun, 16 Oct 2011 02:05:41 +0200
User-agent: Mozilla/5.0 (X11; Linux i686; rv:7.0.1) Gecko/20110929 Thunderbird/7.0.1

Le 15/10/2011 08:31, Stephen L. a écrit :
Bon je viens passer un bon bout de temps à essayer de porter CF avec les hooks, 
mais je ne vois pas de façon élégante de le faire pour le moment.

De ce que je comprends, le module dans lequel je dois implémenter CF (prenons 
comme exemple product), doit lui-même déclarer les modules qui peuvent se 
hooker à lui. Au final, je dois quand même modifier le module product pour 
supporter CF :
1- ajouter CF dans $this->const
2- ajouter les hooks aux endroits requis (et 2bis mettre en array les 
paramètres requis?)
3- déplacer le code d'appel à CF dans 
/htdocs/product/class/action_product.class.php, que je devrais recopier dans 
tous les autres hooks files.

Proposition: ne serait-il pas plus judicieux pour le hookmanager de scanner 
tous les descripteurs (ou seulement un dossier de descripteurs spéciaux à la 
triggers) et de les charger si eux-mêmes se sont liés au module hooké ?

Par exemple : dans /htdocs/include/module/modCustomFields.class.php je rajoute :
$this->const = array(0=>array('MAIN_MODULE_MYMODULENAME_HOOKS','all'));
Le 'all' n'est pas géré. Erreur de doc.
Pour hooker tout, ou juste:
$this->const = 
array(0=>array('MAIN_MODULE_MYMODULENAME_HOOKS',array('product'=>array('showInputFields','AnotherMethod'),'service'=>array('showInputFields'))));

Pour juste hooker products et services (qui sont en vrai le meme module mais 
passons).
Non, ce serait juste

$this->const = 
array(0=>array('MAIN_MODULE_MYMODULENAME_HOOKS',array('mymodulename'=>array('product','productdao'));

pour dire "mymodule" se déclenche dans le contexte product (affichage page produit/service) et dans le contexte productdao (execution des fonctions CRUD du produit/service). Ensuite le fait d'avoir les méthode showInputFields fera que la methode sera appelé ou non, mais les methodes ne se déclare pas.

Ensuite, je n'aurais qu'à créer un fichier 
/htdocs/customfields/hooks/actions_customfields.class.php et redéfinir dedans 
les méthodes qui seront appelées par le hookermanager.
oui
Le chemin exact dit etre

/htdocs/customfields/class/actions_customfields.class.php



Je reroute le mail sur la ML dolibarr dev qui doit etre utilisé pour ces discussions.

Qu'en pensez-vous ?

----

Néanmoins je ne pense pas pouvoir continuer davantage à contribuer, je dois 
maintenant passer à d'autres projets. Dans le cas où vous voudriez porter CF 
avec les hooks dans le futur, je pense qu'un simple copier coller des parties 
qui sont dans les modules (chercher customfields_print_creation_form() et 
customfields_print_main_form() ) et les déplacer simplement dans un hook 
devrait relativement bien fonctionner (ne pas oublier le paramètre 
$currentmodule - je ne sais pas si $object contient l'information de nom du 
module courant). Ah oui et contrairement à ExtraFields, CF gère avec 2 
fonctions différentes l'affichage selon que le formulaire est la première 
création ou si c'est sur le datasheet.

Voilà, merci pour vos réponses et support messieurs, bon courage dans la 
continuation de votre projet.



--
Eldy (Laurent Destailleur).
---------------------------------------------------------------
EMail: address@hidden
Web: http://www.destailleur.fr

Dolibarr (Project leader): http://www.dolibarr.org
To make a donation for Dolibarr project via Paypal: address@hidden
AWStats (Author) : http://awstats.sourceforge.net
To make a donation for AWStats project via Paypal: address@hidden
AWBot (Author) : http://awbot.sourceforge.net
CVSChangeLogBuilder (Author) : http://cvschangelogb.sourceforge.net




reply via email to

[Prev in Thread] Current Thread [Next in Thread]