31,003
edits
No edit summary |
No edit summary |
||
| Line 18: | Line 18: | ||
Les chapitres suivant vous présentent comment réaliser tout cela en manuel de manière simple. Pour les développeurs très expérimentés, une méthode par génération MDA est en cours de mise au point. Voir le dernier chapitre pour cela. | Les chapitres suivant vous présentent comment réaliser tout cela en manuel de manière simple. Pour les développeurs très expérimentés, une méthode par génération MDA est en cours de mise au point. Voir le dernier chapitre pour cela. | ||
= Créer une extension = | |||
Les sous chapitres suivant dévrivent les actions à faire pour créer un module Dolibarr. Les premiers chapitre sont obligatoires quelquesoit la vocation du modules, les suivant dépendront de ce que doit faire le module. | |||
= [[File:Art.png]] Créer un descripteur de Module (obligatoire) = | == [[File:Art.png]] Créer un descripteur de Module (obligatoire) == | ||
'''Quand''': Obligatoire dès qu'une extension est développée, quelque soit sa vocation. | '''Quand''': Obligatoire dès qu'une extension est développée, quelque soit sa vocation. | ||
== Créer votre descripteur == | === Créer votre descripteur === | ||
La première étape est donc de créer un fichier descripteur du module. | La première étape est donc de créer un fichier descripteur du module. | ||
Pour cela, aller dans le répertoire '''dev/skeletons''' et recopier le fichier modMyModule.class.php dans le répertoire | Pour cela, aller dans le répertoire '''dev/skeletons''' et recopier le fichier modMyModule.class.php dans le répertoire | ||
| Line 35: | Line 37: | ||
Votre fichier descripteur de votre module est alors en place. | Votre fichier descripteur de votre module est alors en place. | ||
== Tester votre descripteur == | === Tester votre descripteur === | ||
Lancer Dolibarr et aller sur la page '''Configuration->module''', vous devez voir apparaitre une nouvelle ligne avec votre nouveau module et la possibilité de l'activer ou non (parcourez tous les onglets de chaque catégories de modules jusqu'à le retrouver). | Lancer Dolibarr et aller sur la page '''Configuration->module''', vous devez voir apparaitre une nouvelle ligne avec votre nouveau module et la possibilité de l'activer ou non (parcourez tous les onglets de chaque catégories de modules jusqu'à le retrouver). | ||
C'est la valeur de $this->special qui détermine dans quel onglet se trouve votre module. | C'est la valeur de $this->special qui détermine dans quel onglet se trouve votre module. | ||
= [[File:Art.png]] Arborescence d'un nouveau module = | == [[File:Art.png]] Arborescence d'un nouveau module == | ||
Créer un répertoire 'monmodule' qui recevra les fichiers du module. Ce répertoire doit etre dans le répertoire '''htdocs''' et contiendra les sous-répertoires suivants (seul la premiere ligne est obligatoire): | Créer un répertoire 'monmodule' qui recevra les fichiers du module. Ce répertoire doit etre dans le répertoire '''htdocs''' et contiendra les sous-répertoires suivants (seul la premiere ligne est obligatoire): | ||
| Line 73: | Line 75: | ||
* htdocs/custom/mymodule/themes/mytheme if module provide its own skin | * htdocs/custom/mymodule/themes/mytheme if module provide its own skin | ||
= [[File:Art.png]] Créer vos tables SQL et les classes PHP DAO (optionnel) = | == [[File:Art.png]] Créer vos tables SQL et les classes PHP DAO (optionnel) == | ||
'''Quand''': Si votre module a besoin de gérer des données qui lui sont propres | '''Quand''': Si votre module a besoin de gérer des données qui lui sont propres | ||
== Créer vos fichiers .sql == | === Créer vos fichiers .sql === | ||
Si votre module a vocation à gérer des données bien a lui, qui n'existent pas en base dans la version standard de Dolibarr, il est nécessaire de définir des tables SQL pour stocker ces données. | Si votre module a vocation à gérer des données bien a lui, qui n'existent pas en base dans la version standard de Dolibarr, il est nécessaire de définir des tables SQL pour stocker ces données. | ||
| Line 93: | Line 95: | ||
Rem: Les fichiers des autres bases ne sont pas à maintenir. Ils sont lus et convertit à la volée par le driver de la base de données. | Rem: Les fichiers des autres bases ne sont pas à maintenir. Ils sont lus et convertit à la volée par le driver de la base de données. | ||
== Tester vos fichier .sql == | === Tester vos fichier .sql === | ||
Une fois les fichiers prêts, vous pouvez retourner sous Dolibarr puis désactiver le module, dropper les tables en base et réactiver le module. | Une fois les fichiers prêts, vous pouvez retourner sous Dolibarr puis désactiver le module, dropper les tables en base et réactiver le module. | ||
| Line 99: | Line 101: | ||
Si tel n'est pas le cas, vérifiez vos scripts en les passant à la main, ou consultez les logs Dolibarr. | Si tel n'est pas le cas, vérifiez vos scripts en les passant à la main, ou consultez les logs Dolibarr. | ||
== Générer la classe PHP DAO d'accès aux tables == | === Générer la classe PHP DAO d'accès aux tables === | ||
Une fois votre ou vos tables créées en base, aller dans le répertoire '''dev/skeletons''', copiez le fichier '''build_class_from_table.php''' dans le répertoire sql/ de votre module, et lancez le script | Une fois votre ou vos tables créées en base, aller dans le répertoire '''dev/skeletons''', copiez le fichier '''build_class_from_table.php''' dans le répertoire sql/ de votre module, et lancez le script | ||
| Line 111: | Line 113: | ||
Un fichier '''out.nomtable_script.php''' a également été généré et contient un exemple de code pour utiliser la classe pour chacune des 4 méthodes CRUD. | Un fichier '''out.nomtable_script.php''' a également été généré et contient un exemple de code pour utiliser la classe pour chacune des 4 méthodes CRUD. | ||
= [[File:Art.png]] Affichage des onglets (optionnel) = | == [[File:Art.png]] Affichage des onglets (optionnel) == | ||
== Ajouter ou supprimer des onglets sur les fiches objets == | === Ajouter ou supprimer des onglets sur les fiches objets === | ||
'''Quand''' : Pour ajouter votre propre onglet parmi les onglets standard d'une fiche entité (facture, commande, proposition commercial, adhérent...) | '''Quand''' : Pour ajouter votre propre onglet parmi les onglets standard d'une fiche entité (facture, commande, proposition commercial, adhérent...) | ||
| Line 149: | Line 151: | ||
Pour alimenter le contenu de l'onglet avec des données issues de la base, voir le chapitre suivant. | Pour alimenter le contenu de l'onglet avec des données issues de la base, voir le chapitre suivant. | ||
== Ajouter les onglets standard d'un objet sur sa propre page == | === Ajouter les onglets standard d'un objet sur sa propre page === | ||
'''Quand''' : Pour afficher les onglets standard d'une fiche entité (produit, tiers, etc.) sur votre propre page onglet d'une entité. | '''Quand''' : Pour afficher les onglets standard d'une fiche entité (produit, tiers, etc.) sur votre propre page onglet d'une entité. | ||
| Line 220: | Line 222: | ||
Pour plus de détail, se référer à la [http://www.dolibarr.fr/doxygen/ documentation Doxygen] ou directement au code de Dolibarr. | Pour plus de détail, se référer à la [http://www.dolibarr.fr/doxygen/ documentation Doxygen] ou directement au code de Dolibarr. | ||
= [[File:Art.png]] Créer vos pages écran PHP (optionnel) = | == [[File:Art.png]] Créer vos pages écran PHP (optionnel) == | ||
'''Quand''': Si l'objet de votre module est d'ajouter des fonctionnalités qui nécessitent de nouveaux écrans. | '''Quand''': Si l'objet de votre module est d'ajouter des fonctionnalités qui nécessitent de nouveaux écrans. | ||
== Créer une page écran PHP brute == | === Créer une page écran PHP brute === | ||
Vous pouvez ensuite créer vos pages PHP, qui se basent sur les données de vos tables, en utilisant les squelettes fournis comme exemple dans le répertoire '''dev/skeletons''' (Pour le développement d'un script en ligne de commande, voir [[Développement de scripts]]). | Vous pouvez ensuite créer vos pages PHP, qui se basent sur les données de vos tables, en utilisant les squelettes fournis comme exemple dans le répertoire '''dev/skeletons''' (Pour le développement d'un script en ligne de commande, voir [[Développement de scripts]]). | ||
| Line 243: | Line 245: | ||
Saisissez ensuite votre code pour afficher la page. | Saisissez ensuite votre code pour afficher la page. | ||
== Créer une page écran PHP par template Smarty == | === Créer une page écran PHP par template Smarty === | ||
=== Compléter votre descripteur de module === | ==== Compléter votre descripteur de module ==== | ||
Dans votre descripteur de module, compléter la déclaration du tableau this->const afin d'ajouter la constante MAIN_MODULE_monmodule_NEEDSMARTY. | Dans votre descripteur de module, compléter la déclaration du tableau this->const afin d'ajouter la constante MAIN_MODULE_monmodule_NEEDSMARTY. | ||
<source lang="php"> | <source lang="php"> | ||
| Line 252: | Line 254: | ||
Ceci aura pour effet, lors de l'initialisation de l'objet $conf, de remplir le tableau $conf->need_smarty des modules qui ont besoin de smarty et si au moins un module est requis, le code dans main.inc.php chargera systématiquement les librairies de Smarty. | Ceci aura pour effet, lors de l'initialisation de l'objet $conf, de remplir le tableau $conf->need_smarty des modules qui ont besoin de smarty et si au moins un module est requis, le code dans main.inc.php chargera systématiquement les librairies de Smarty. | ||
=== Réaliser vos pages templates === | ==== Réaliser vos pages templates ==== | ||
Construisez vos pages templates (fichiers '''mespages.tpl''') dans le répertoire '''htdocs/monmodule/templates'''. | Construisez vos pages templates (fichiers '''mespages.tpl''') dans le répertoire '''htdocs/monmodule/templates'''. | ||
=== Réaliser vos pages PHP === | ==== Réaliser vos pages PHP ==== | ||
Réaliser vos pages écrans PHP Dolibarr en suivant le modèle décrit dans cette documentation. | Réaliser vos pages écrans PHP Dolibarr en suivant le modèle décrit dans cette documentation. | ||
La différence est qu'à la fin, pour afficher la présentation HTML, il vous faut ajouter la séquence suivante: | La différence est qu'à la fin, pour afficher la présentation HTML, il vous faut ajouter la séquence suivante: | ||
| Line 265: | Line 267: | ||
L'objet $smarty n'a pas à être initialisé, il est normalement déjà défini (sur la base de Smarty intégré dans Dolibarr), si votre descripteur de module a bien déclaré avoir besoin de smarty et que le module a bien été activé après cela. | L'objet $smarty n'a pas à être initialisé, il est normalement déjà défini (sur la base de Smarty intégré dans Dolibarr), si votre descripteur de module a bien déclaré avoir besoin de smarty et que le module a bien été activé après cela. | ||
== Accès à la base == | === Accès à la base === | ||
Si vous avez besoin de réaliser des modifications en base dans votre propre table ajoutée, utilisez la classe générée plus haut qui contient les méthodes pour cela. | Si vous avez besoin de réaliser des modifications en base dans votre propre table ajoutée, utilisez la classe générée plus haut qui contient les méthodes pour cela. | ||
| Line 304: | Line 306: | ||
</source> | </source> | ||
== Définition du style == | === Définition du style === | ||
Pour que le look de la page soit aligné avec le thème Dolibarr, il est nécessaire d'utiliser les styles des CSS de Dolibarr. | Pour que le look de la page soit aligné avec le thème Dolibarr, il est nécessaire d'utiliser les styles des CSS de Dolibarr. | ||
| Line 315: | Line 317: | ||
== Utiliser le sélecteur de date de Dolibarr == | === Utiliser le sélecteur de date de Dolibarr === | ||
Si vous le désirez, vous pouvez profiter du sélecteur de date dans des écrans Dolibarr. Pour cela, utilisez la ligne suivante: | Si vous le désirez, vous pouvez profiter du sélecteur de date dans des écrans Dolibarr. Pour cela, utilisez la ligne suivante: | ||
<source lang="php"> | <source lang="php"> | ||
| Line 332: | Line 333: | ||
</source> | </source> | ||
= [[File:Art.png]] Définir votre page de configuration (optionnel) = | == [[File:Art.png]] Définir votre page de configuration (optionnel) == | ||
'''Quand''': Si votre module offre plusieurs options paramétrables. | '''Quand''': Si votre module offre plusieurs options paramétrables. | ||
== Creer votre page d'édition de configuration == | === Creer votre page d'édition de configuration === | ||
Si votre module offre plusieurs options paramétrables, il est nécessaire de créer une page PHP pour éditer les options (qui sont stockées dans la [[Table llx_const|table '''llx_const''']]). | Si votre module offre plusieurs options paramétrables, il est nécessaire de créer une page PHP pour éditer les options (qui sont stockées dans la [[Table llx_const|table '''llx_const''']]). | ||
Créer une page PHP nommée '''monmodule_setupapage.php''' qui affiche les options possibles et les met à jour. | Créer une page PHP nommée '''monmodule_setupapage.php''' qui affiche les options possibles et les met à jour. | ||
| Line 345: | Line 346: | ||
</source> | </source> | ||
== Tester votre page == | === Tester votre page === | ||
Allez sur la page '''Configuration->module''', vous devez voir apparaitre une icône qui permet d'accéder à la page de configuration et vous devez être capable de modifier ces options et les voir conservées en base. | Allez sur la page '''Configuration->module''', vous devez voir apparaitre une icône qui permet d'accéder à la page de configuration et vous devez être capable de modifier ces options et les voir conservées en base. | ||
= [[File:Art.png]] Définir vos entrées de menu (optionnel) = | == [[File:Art.png]] Définir vos entrées de menu (optionnel) == | ||
'''Quand''': Si vous avez créé des pages PHP, il est nécessaire que ces écrans soient accessibles depuis le menu Dolibarr. | '''Quand''': Si vous avez créé des pages PHP, il est nécessaire que ces écrans soient accessibles depuis le menu Dolibarr. | ||
== Définissez vos entrées menus == | === Définissez vos entrées menus === | ||
Pour cela, il vous faut définir dans le fichier descripteur de module, le tableau this->menu qui déclare les menus. | Pour cela, il vous faut définir dans le fichier descripteur de module, le tableau this->menu qui déclare les menus. | ||
Ce tableau contient toutes les entrées qui apparaitront dans les menus une fois le module activé. | Ce tableau contient toutes les entrées qui apparaitront dans les menus une fois le module activé. | ||
| Line 395: | Line 396: | ||
Pour conditionner l'accès au menu selon des permission, modifier la propriété '''perms''' du tableau. Voir le chapitre sur les permissions un peu plus loin pour savoir comment ajouter des permissions. | Pour conditionner l'accès au menu selon des permission, modifier la propriété '''perms''' du tableau. Voir le chapitre sur les permissions un peu plus loin pour savoir comment ajouter des permissions. | ||
== Tester vos entrées menus == | === Tester vos entrées menus === | ||
Désactiver et réactiver votre module sous Dolibarr, les entrées menus doivent alors apparaitre (si la condition dans 'enabled' est vraie). | Désactiver et réactiver votre module sous Dolibarr, les entrées menus doivent alors apparaitre (si la condition dans 'enabled' est vraie). | ||
= [[File:Art.png]] Définir vos propres permissions (optionnel) = | == [[File:Art.png]] Définir vos propres permissions (optionnel) == | ||
'''Quand''': Si vous voulez ajouter de nouvelles permissions. | '''Quand''': Si vous voulez ajouter de nouvelles permissions. | ||
| Line 428: | Line 429: | ||
</source> | </source> | ||
= [[File:Art.png]] Définir vos propres box (optionnel) = | == [[File:Art.png]] Définir vos propres box (optionnel) == | ||
'''Quand''': Si votre module amène avec lui une ou plusieurs Boxes. | '''Quand''': Si votre module amène avec lui une ou plusieurs Boxes. | ||
== Définissez vos box == | === Définissez vos box === | ||
Pour cela, modifier les tableaux $this->boxes du fichier descripteur de module. | Pour cela, modifier les tableaux $this->boxes du fichier descripteur de module. | ||
Il suffit d'ajouter une ligne par fichier box qui se trouve dans le répertoire '''htdocs/includes/boxes''' | Il suffit d'ajouter une ligne par fichier box qui se trouve dans le répertoire '''htdocs/includes/boxes''' | ||
| Line 446: | Line 447: | ||
Ensuite creer les fichiers mabox0.php, mabox1.php... en prenant exemple sur des box existantes (dans le répertoire htdocs/include/boxes | Ensuite creer les fichiers mabox0.php, mabox1.php... en prenant exemple sur des box existantes (dans le répertoire htdocs/include/boxes | ||
== Tester la présence de vos box dans Dolibarr == | === Tester la présence de vos box dans Dolibarr === | ||
Désactiver et réactiver le module. | Désactiver et réactiver le module. | ||
| Line 453: | Line 454: | ||
Vos box doivent apparaitre dans la liste des box activables. Activer les puis aller sur la page d'accueil et vérifier qu'elles s'affichent correctement. | Vos box doivent apparaitre dans la liste des box activables. Activer les puis aller sur la page d'accueil et vérifier qu'elles s'affichent correctement. | ||
= [[File:Art.png]] Définir vos propres exports (optionnel) = | == [[File:Art.png]] Définir vos propres exports (optionnel) == | ||
'''Quand''': Si votre module amène avec lui des exports prédéfini de données (pour ces propres tables ou des tables déjà existante d'un autre module de Dolibarr). | '''Quand''': Si votre module amène avec lui des exports prédéfini de données (pour ces propres tables ou des tables déjà existante d'un autre module de Dolibarr). | ||
== Définissez l'export == | === Définissez l'export === | ||
Pour cela, décommenter et modifier les tableaux $this->export_xxx du votre fichier descripteur de module. | Pour cela, décommenter et modifier les tableaux $this->export_xxx du votre fichier descripteur de module. | ||
== Tester votre export == | === Tester votre export === | ||
Aller dans le menu outils -> export de Dolibarr. Votre export doit apparaitre dans la liste des exports prédéfinis disponible (si votre module est bien activé). | Aller dans le menu outils -> export de Dolibarr. Votre export doit apparaitre dans la liste des exports prédéfinis disponible (si votre module est bien activé). | ||
Le choisir, vous devez alors voir les champs possible définis dans le tableau à l'étape précédente. | Le choisir, vous devez alors voir les champs possible définis dans le tableau à l'étape précédente. | ||
Choisir quelques champs et tenter une génération du fichier export. | Choisir quelques champs et tenter une génération du fichier export. | ||
= [[File:Art.png]] Définir vos styles CSS (optionnel) = | == [[File:Art.png]] Définir vos styles CSS (optionnel) == | ||
'''Quand''': Si dans vos écrans PHP, vous utiliser des classes de styles qui ne sont pas celle des thèmes de Dolibarr (non recommandé). | '''Quand''': Si dans vos écrans PHP, vous utiliser des classes de styles qui ne sont pas celle des thèmes de Dolibarr (non recommandé). | ||
Cette fonctionnalité est décrite mais pas encore opérationnel en 2.4 | Cette fonctionnalité est décrite mais pas encore opérationnel en 2.4 | ||
== Créer et déclarer votre feuille de style == | === Créer et déclarer votre feuille de style === | ||
Créer un fichier de style css nommé '''monmodule.css''' et le placer dans le répertoire '''''monmodule''''' dans '''htdocs'''. Il ne peut y avoir qu'un fichier css propre à chaque module. | Créer un fichier de style css nommé '''monmodule.css''' et le placer dans le répertoire '''''monmodule''''' dans '''htdocs'''. Il ne peut y avoir qu'un fichier css propre à chaque module. | ||
Rappelons qu'il vaut mieux utiliser les styles déjà existant de Dolibarr (le fichier css utilisé par Dolibarr étant le fichier '''themes/nomtheme/''nomtheme''.php.css'''. Ne créer un fichier css propre à votre module que si vous devez absolument gérer des styles non déjà existants. | Rappelons qu'il vaut mieux utiliser les styles déjà existant de Dolibarr (le fichier css utilisé par Dolibarr étant le fichier '''themes/nomtheme/''nomtheme''.php.css'''. Ne créer un fichier css propre à votre module que si vous devez absolument gérer des styles non déjà existants. | ||
| Line 476: | Line 477: | ||
Par exemple '/monmodule/monfichier.css'. | Par exemple '/monmodule/monfichier.css'. | ||
== Tester votre feuille de style == | === Tester votre feuille de style === | ||
Désactiver et réactiver votre module. | Désactiver et réactiver votre module. | ||
| Line 483: | Line 484: | ||
Vous devriez voir dans l'entête HTML, une ligne déclarant votre feuille de style. | Vous devriez voir dans l'entête HTML, une ligne déclarant votre feuille de style. | ||
= [[File:Art.png]] Définir vos fonctions Javascript (optionnel) = | == [[File:Art.png]] Définir vos fonctions Javascript (optionnel) == | ||
'''Quand''': Si dans vos écrans PHP, vous utiliser des fonctions javascript non dispo en standard (fichier lib_head.js) | '''Quand''': Si dans vos écrans PHP, vous utiliser des fonctions javascript non dispo en standard (fichier lib_head.js) | ||
| Line 496: | Line 497: | ||
</source> | </source> | ||
= [[File:Art.png]] Déclencher du code sur un évènement Dolibarr (optionnel) = | == [[File:Art.png]] Déclencher du code sur un évènement Dolibarr (optionnel) == | ||
'''Quand''': Si vous voulez que des actions particulières s'exécutent suite au déclenchement d'actions standards de Dolibarr (exemple: je veux mettre à jour une table de mon module quand une facture se crée dans Dolibarr), il vous faut créer un fichier de '''triggers'''. | '''Quand''': Si vous voulez que des actions particulières s'exécutent suite au déclenchement d'actions standards de Dolibarr (exemple: je veux mettre à jour une table de mon module quand une facture se crée dans Dolibarr), il vous faut créer un fichier de '''triggers'''. | ||
| Line 502: | Line 503: | ||
et [[Interfaces_Exterieur_vers_Dolibarr|Interfaces exterieures vers Dolibarr]] | et [[Interfaces_Exterieur_vers_Dolibarr|Interfaces exterieures vers Dolibarr]] | ||
= [[File:Art.png]] Ajouter un module de numérotation (optionnel) = | == [[File:Art.png]] Ajouter un module de numérotation (optionnel) == | ||
Voir la page [[Créer un module de numérotation]]. | Voir la page [[Créer un module de numérotation]]. | ||
== [[File:Art.png]] Ajouter un nouveau modèle de document (optionnel) == | |||
= [[File:Art.png]] Ajouter un nouveau modèle de document (optionnel) = | |||
La documentation au sujet de la génération de documents depuis des modèles est disponible sur la page [[Créer un modèle de document PDF]] ou [[Créer un modèle de document ODT]]. | La documentation au sujet de la génération de documents depuis des modèles est disponible sur la page [[Créer un modèle de document PDF]] ou [[Créer un modèle de document ODT]]. | ||
= [[File:Art.png]] Quelques règles de codage et fonctions pour développeurs = | = [[File:Art.png]] Quelques règles de codage et fonctions pour développeurs = | ||