Skip to content

Latest commit

 

History

History
56 lines (42 loc) · 2.13 KB

File metadata and controls

56 lines (42 loc) · 2.13 KB

MGL — Menu Group/Layout overrides

Petit module Dolibarr qui déplace les blocs Expéditions et Réceptions du menu latéral Produits vers le menu latéral Commercial, sans modifier le core de Dolibarr.

Arborescence

htdocs/custom/mgl/
├── core/modules/modMgl.class.php   # descripteur du module
├── class/actions_mgl.class.php     # hook menuLeftMenuItems
└── README.md

Les chemins respectent la convention de découverte de HookManager : /<module>/class/actions_<module>.class.php avec la classe Actions<Module>.

Installation

  1. Le dossier htdocs/custom/mgl/ doit être présent (ce module).
  2. Vérifier que htdocs/custom/ est bien activé dans htdocs/conf/conf.php :
    $dolibarr_main_url_root_alt='/custom';
    $dolibarr_main_document_root_alt='C:/wamp64/www/dolibarr/htdocs/custom';
    
  3. Activer le module dans Accueil → Configuration → Modules/Applications (catégorie Interfaces, module Mgl).

Comment ça fonctionne

Le module enregistre un hook menuLeftMenuItems (contexte main) qui :

  • Sur mainmenu == 'products' : retire les items de niveau 0 dont leftmenu vaut sendings ou receptions, ainsi que tous leurs sous-items.
  • Sur mainmenu == 'commercial' : ajoute les mêmes blocs avec :
    • Expéditions à la position 250 (entre Commandes clients (200) et Demandes de prix fournisseurs (300)).
    • Réceptions à la position 450 (entre Commandes fournisseurs (400) et Contrats (2000)).

Le tri par positionfull effectué par eldy.lib.php après le hook place automatiquement les blocs au bon endroit dans la liste.

Désactivation

Désactiver le module via l'admin Dolibarr — les menus reprennent leur position d'origine immédiatement (rien n'est touché en BDD).

Limitations

  • Couvre uniquement le handler eldy_menu.php (par défaut). Si tu changes pour auguria_menu.php, ce module continue de fonctionner car le hook menuLeftMenuItems est appelé dans les deux handlers.
  • Si un autre module surcharge le même hook avec return 1, il y a risque de conflit (le dernier hook gagne pour la propriété resArray).