Activation des modules automatiquement à l'installation

Bonjour,

J’utilise Docker pour déployer Dolibarr sur MariaDB avec l’image de Tuxgasy.
Ca marche super et après déploiement, j’ai une instance rapidement disponible sur laquelle je peux me connecter.

Indépendamment de comment je l’installe, je voudrais l’automatiser en faisant en sorte que certains modules d’origine (Compta, Tiers, Factures,…) soient automatiquement activés.

J’ai tenté de simplement ajouter la valeur MAIN_MODULE_ directement dans la base llx_const. Comme je m’y attendait, cela n’a pas déclenché l’initialisation des modules et la création de leurs tables, qui se déclenche par le bouton de la page Modules/Applications.

En regardant les modules dans /core/modules, certains (FckEditor, Import et Export) ont un paramètre $this->enabled_bydefault = true. Ces modules ne sont malheureusement pas activés après l’installation.

J’ai cherché dans le Dockerfile, rien n’y apparait sur la sélection de modules au départ. Si je l’installais de 0 avec un LAMP ou un WAMP, le même problème serait le même

La seule approche que je vois est de faire un script pour appeler les fonctions derrière l’action « set » du module.php, fonction appelée lorsque l’on clique sur le bouton d’activation.
Je sais pas trop comment faire encore et j’ai peur de partir sur quelque chose de bien trop compliqué.

Est-ce que je fais fausse route ? Y’aurait pas quelqu’un qui connait un raccourci caché ? :smile:

8 ans après mes premières installations, après avoir poncé Jira, Odoo, Notion et d’autres, je suis toujours aussi fan de Dolibarr :heart:

hello, effectivement si on a beaucoup de module à activer au départ c’est un peu fastidieux
A titre d’info j’ai une fonction dans un de mes modules (dolitweak) qui permet de réaliser cela plus rapidement (on coche des cases de module et on appuie une fois pour la validation au lieu de le faire module par module)

FastModule : Optimisation de l’interface pour trouver les modules

https://wiki.patas-monkey.com/index.php?title=Dolitweak#FastModule_:_Optimisation_de_l.27interface_pour_trouver_les_modules

Bonjour,

Je ne déploie pas avec docker mais avec nixos. Pour avoir des modules activés j’utilise une base de données initiale qui a déjà ces modules activés pour le déployement avec l’option dédiée pour cela services.mysql.initialDatabases

1 « J'aime »

Après avoir fouillé modules.php qui appelle la fonction activateModule, je me suis fait un petit script php.

Au final, j’ai trouvé le script docker-init.php de tuxgasy qui activait le module User.

Il suffit de le remplacer, dans /var/www/scripts/docker-init.php.

Je l’ai optimisé de la forme suivante, je vais proposer un merge.

Pour ceux qui n’utilisent pas Docker, il suffit d’exécuter ce script php après installation :

#!/usr/bin/env php
<?php
require_once '../htdocs/master.inc.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';

$mods = ['User', 'Fournisseur', 'Societe', 'Propale', 'Commande'];
foreach ($mods as $mod) {
        activateModule('mod'.$mod);
}
?>