RESOLU : Hooks et context

Bonjour,

Je débute dnas le dev de dolibarr.
J’ai crée un module par le générateur de module.

Puis j’ai ajouté ‹ hooks › => array(‹ all ›) dans le descrputeur afin que mon hook soit actif dans tous les contexts. par le suite, il ne sera actif que pour la création d’une nouvelle tâche de l’agenda (mais je n’ai pas encore trouver ce conexte).

J’ai ajouter modifier

class ActionsModule_lolo
{
/**
* @var DoliDB Database handler.
/
public $db;
/
*
* @var string Error
/
public $error = ‹  ›;
/
*
* @var array Errors
*/
public $errors = array();

/**
 \* @var array Hook results. Propagated to $hookmanager-\>resArray for later reuse
 */
public $results = array();

/**
 \* @var string String displayed by executeHook() immediately after return
 */
public $resprints;


/**
 \* Constructor
 *
 \*  @param		DoliDB		$db      Database handler
 */
public function __construct($db)
{
    $this-\>db = $db;
}

/**
 \* Overloading the doActions function : replacing the parent's function with the one below
 *
 \* @param   array()         $parameters     Hook metadatas (context, etc...)
 \* @param   CommonObject    $object         The object to process (an invoice if you are in invoice module, a propale in propale's module, etc...)
 \* @param   string          $action         Current action (if set). Generally create or edit or null
 \* @param   HookManager     $hookmanager    Hook manager propagated to allow calling another hook
 \* @return  int                             < 0 on error, 0 on success, 1 to replace standard code
 */

[b] public function printCommonFooter($parameters, &$object, &$action, $hookmanager)
{
echo "<script>’;
echo « alert(OK); »;
echo ‹ </script> ›;

return 0;

}[/b]

Mais rien ne se passe.
Mon code n’est pas appelé.

J’ai du oublier qqchose…

Laurent

hello
as-tu aussi déclaré le hook dans le module?

Toutes les modifs de mon code sont ici.
J’ai cru avoir suivi les instrutions du wiki.

‹ hooks › => array(‹ all ›) dans module_lolo/core/modules/modModule_lolo.class.php

le reste dans module_lolo/class/actions_module_lolo.class.php

Je ne sais pas comment le déclaré autrement. J’utilise un hook, je n’en crée pas un nouveau. Enfin je crois…

Up

Bonjour,

Il faut le déclarer où et comment ?
J’ai rerelu le wiki sur les hooks et je ne vois rien que je n’ai pas fait.

Il me faut de l’aide, s-t-p.

c’est dans la définition du module que tu dois dire où s’active ton hook

		// hook pour la recherche  d'éléments et ajout d'une boite en bas
		$this->module_parts = array(
			'hooks' => array('searchform','commonobject')
		);

sans cela il ne s’activera pas

Merci pour la réponse.

j’ai mis $this->module_parts = array(
‹ hooks › => array(‹ all ›)
);
mais rien ne se passe.

Mon but, pour le moment, d’ajouter du javascript dans tous les contextes.
puis dans un seul. la création d’évênement.

j’ai modifier par
$this->module_parts = array(
‹ triggers › => 0, // Set this to 1 if module has its own trigger directory (core/triggers)
‹ login › => 0, // Set this to 1 if module has its own login method directory (core/login)
‹ substitutions › => 1, // Set this to 1 if module has its own substitution function file (core/substitutions)
‹ menus › => 0, // Set this to 1 if module has its own menus handler directory (core/menus)
‹ theme › => 0, // Set this to 1 if module has its own theme directory (theme)
‹ tpl › => 0, // Set this to 1 if module overwrite template dir (core/tpl)
‹ barcode › => 0, // Set this to 1 if module has its own barcode directory (core/modules/barcode)
‹ models › => 0, // Set this to 1 if module has its own models directory (core/modules/xxx)
‹ css › => array(’/module_lolo/css/module_lolo.css.php’), // Set this to relative path of css file if module has its own css file
‹ js › => array(’/module_lolo/js/module_lolo.js.php’), // Set this to relative path of js file if module must load a js on all pages
‹ hooks › => array(‹ all ›,‹ searchform ›,‹ commonobject ›) // Set here all hooks context managed by module. You can also set hook context ‹ all ›
);

toujours rien…

Bonjour
As tu désactivé et réactivé ton module?

Fred

Oui, au moins 10 fois …

Bonjour :happy:
Jamais testé ‹ all ›
essaie au moins avec juste cette valeur pour voir ex :

'hooks' => array('ordercard')

Ok. fait. Je vais sur quel écran pour tester ? ordercard correspond à quoi ?

J’ai été sur plusieurs écran. Rien…

affichage d’une commande client

il ne se passe rien non plus.

Voici le code complet :

générer par le générateur de module.

class modModule_lolo extends DolibarrModules
{
// @codingStandardsIgnoreEnd
/**
* Constructor. Define names, constants, directories, boxes, permissions
*
* @param DoliDB $db Database handler
*/
public function __construct($db)
{
global $langs,$conf;

    $this-\>db = $db;

	// Id for module (must be unique).
	// Use here a free id (See in Home -\> System information -\> Dolibarr for list of used modules id).
	$this-\>numero = 970000;		// TODO Go on page https://wiki.dolibarr.org/index.php/List_of_modules_id to reserve id number for your module
	// Key text used to identify module (for permissions, menus, etc...)
	$this-\>rights_class = 'module_lolo';

	// Family can be 'crm','financial','hr','projects','products','ecm','technic','interface','other'
	// It is used to group modules by family in module setup page
	$this-\>family = "other";
	// Module position in the family
	$this-\>module_position = 500;
	// Gives the possibility to the module, to provide his own family info and position of this family (Overwrite $this-\>family and $this-\>module_position. Avoid this)
	//$this-\>familyinfo = array('myownfamily' =\> array('position' =\> '001', 'label' =\> $langs-\>trans("MyOwnFamily")));

	// Module label (no space allowed), used if translation string 'ModuleModule_loloName' not found (MyModue is name of module).
	$this-\>name = preg_replace('/^mod/i','',get_class($this));
	// Module description, used if translation string 'ModuleModule_loloDesc' not found (MyModue is name of module).
	$this-\>description = "Ceci est un module Test de lolo";
	// Used only if file README.md and README-LL.md not found.
	$this-\>descriptionlong = "Ceci est un module Test de lolo (Long)";

	$this-\>editor_name = "Idealog";
	$this-\>editor_url = 'https://www.idealog-info.net';

	// Possible values for version are: 'development', 'experimental', 'dolibarr', 'dolibarr_deprecated' or a version string like 'x.y.z'
	$this-\>version = '1.0';
	// Key used in llx_const table to save module status enabled/disabled (where MODULE_LOLO is value of property name of module in uppercase)
	$this-\>const_name = 'MAIN_MODULE_'.strtoupper($this-\>name);
	// Name of image file used for this module.
	// If file is in theme/yourtheme/img directory under name object_pictovalue.png, use this-\>picto='pictovalue'
	// If file is in module/img directory under name object_pictovalue.png, use this-\>picto='pictovalue@module'
	$this-\>picto='generic';

	// Defined all module parts (triggers, login, substitutions, menus, css, etc...)
	// for default path (eg: /module_lolo/core/xxxxx) (0=disable, 1=enable)
	// for specific path of parts (eg: /module_lolo/core/modules/barcode)
	// for specific css file (eg: /module_lolo/css/module_lolo.css.php)
	$this-\>module_parts = array(
	                        	                        'triggers' =\> 0,                                 	// Set this to 1 if module has its own trigger directory (core/triggers)
								'login' =\> 0,                                    	// Set this to 1 if module has its own login method directory (core/login)
								'substitutions' =\> 1,                            	// Set this to 1 if module has its own substitution function file (core/substitutions)
								'menus' =\> 0,                                    	// Set this to 1 if module has its own menus handler directory (core/menus)
								'theme' =\> 0,                                    	// Set this to 1 if module has its own theme directory (theme)
	                        	                        'tpl' =\> 0,                                      	// Set this to 1 if module overwrite template dir (core/tpl)
								'barcode' =\> 0,                                  	// Set this to 1 if module has its own barcode directory (core/modules/barcode)
								'models' =\> 0,                                   	// Set this to 1 if module has its own models directory (core/modules/xxx)
								'css' =\> array('/module_lolo/css/module_lolo.css.php'),	// Set this to relative path of css file if module has its own css file
 								'js' =\> array('/module_lolo/js/module_lolo.js.php'),          // Set this to relative path of js file if module must load a js on all pages
								'hooks' =\> array('ordercard') 	// Set here all hooks context managed by module. You can also set hook context 'all'
	                        );

	// Data directories to create when module is enabled.
	// Example: this-\>dirs = array("/module_lolo/temp","/module_lolo/subdir");
	$this-\>dirs = array();

	// Config pages. Put here list of php page, stored into module_lolo/admin directory, to use to setup module.
	$this-\>config_page_url = array("setup.php@module_lolo");

	// Dependencies
	$this-\>hidden = false;			// A condition to hide module
	$this-\>depends = array();		// List of module class names as string that must be enabled if this module is enabled
	$this-\>requiredby = array();	// List of module ids to disable if this one is disabled
	$this-\>conflictwith = array();	// List of module class names as string this module is in conflict with
	$this-\>phpmin = array(5,3);					// Minimum version of PHP required by module
	$this-\>need_dolibarr_version = array(4,0);	// Minimum version of Dolibarr required by module
	$this-\>langfiles = array("module_lolo@module_lolo");
	$this-\>warnings_activation = array();                     // Warning to show when we activate module. array('always'='text') or array('FR'='textfr','ES'='textes'...)
	$this-\>warnings_activation_ext = array();                 // Warning to show when we activate an external module. array('always'='text') or array('FR'='textfr','ES'='textes'...)

	// Constants
	// List of particular constants to add when module is enabled (key, 'chaine', value, desc, visible, 'current' or 'allentities', deleteonunactive)
	// Example: $this-\>const=array(0=\>array('MODULE_LOLO_MYNEWCONST1','chaine','myvalue','This is a constant to add',1),
	//                             1=\>array('MODULE_LOLO_MYNEWCONST2','chaine','myvalue','This is another constant to add',0, 'current', 1)
	// );
	$this-\>const = array(
		1=\>array('MODULE_LOLO_MYCONSTANT', 'chaine', 'avalue', 'This is a constant to add', 1, 'allentities', 1)
	);

	// Array to add new pages in new tabs
	// Example: $this-\>tabs = array('objecttype:+tabname1:Title1:mylangfile@module_lolo:$user-\>rights-\>module_lolo-\>read:/module_lolo/mynewtab1.php?id=__ID__',  					// To add a new tab identified by code tabname1
    //                              'objecttype:+tabname2:confused:UBSTITUTION_Title2:mylangfile@module_lolo:$user-\>rights-\>othermodule-\>read:/module_lolo/mynewtab2.php?id=__ID__',  	// To add another new tab identified by code tabname2. Label will be result of calling all substitution functions on 'Title2' key.
    //                              'objecttype:-tabname:NU:conditiontoremove');                                                     										// To remove an existing tab identified by code tabname
    // Can also be:	$this-\>tabs = array('data'=\>'...', 'entity'=\>0);
    //
	// where objecttype can be
	// 'categories_x'	  to add a tab in category view (replace 'x' by type of category (0=product, 1=supplier, 2=customer, 3=member)
	// 'contact'          to add a tab in contact view
	// 'contract'         to add a tab in contract view
	// 'group'            to add a tab in group view
	// 'intervention'     to add a tab in intervention view
	// 'invoice'          to add a tab in customer invoice view
	// 'invoice_supplier' to add a tab in supplier invoice view
	// 'member'           to add a tab in fundation member view
	// 'opensurveypoll'	  to add a tab in opensurvey poll view
	// 'order'            to add a tab in customer order view
	// 'order_supplier'   to add a tab in supplier order view
	// 'payment'		  to add a tab in payment view
	// 'payment_supplier' to add a tab in supplier payment view
	// 'product'          to add a tab in product view
	// 'propal'           to add a tab in propal view
	// 'project'          to add a tab in project view
	// 'stock'            to add a tab in stock view
	// 'thirdparty'       to add a tab in third party view
	// 'user'             to add a tab in user view
    $this-\>tabs = array();

	if (! isset($conf-\>module_lolo) || ! isset($conf-\>module_lolo-\>enabled))
    {
    	$conf-\>module_lolo=new stdClass();
    	$conf-\>module_lolo-\>enabled=0;
    }

    // Dictionaries
	$this-\>dictionaries=array();
    /\* Example:
    $this-\>dictionaries=array(
        'langs'=\>'mylangfile@module_lolo',
        'tabname'=\>array(MAIN_DB_PREFIX."table1",MAIN_DB_PREFIX."table2",MAIN_DB_PREFIX."table3"),		// List of tables we want to see into dictonnary editor
        'tablib'=\>array("Table1","Table2","Table3"),													// Label of tables
        'tabsql'=\>array('SELECT f.rowid as rowid, f.code, f.label, f.active FROM '.MAIN_DB_PREFIX.'table1 as f','SELECT f.rowid as rowid, f.code, f.label, f.active FROM '.MAIN_DB_PREFIX.'table2 as f','SELECT f.rowid as rowid, f.code, f.label, f.active FROM '.MAIN_DB_PREFIX.'table3 as f'),	// Request to select fields
        'tabsqlsort'=\>array("label ASC","label ASC","label ASC"),																					// Sort order
        'tabfield'=\>array("code,label","code,label","code,label"),																					// List of fields (result of select to show dictionary)
        'tabfieldvalue'=\>array("code,label","code,label","code,label"),																				// List of fields (list of fields to edit a record)
        'tabfieldinsert'=\>array("code,label","code,label","code,label"),																			// List of fields (list of fields for insert)
        'tabrowid'=\>array("rowid","rowid","rowid"),																									// Name of columns with primary key (try to always name it 'rowid')
        'tabcond'=\>array($conf-\>module_lolo-\>enabled,$conf-\>module_lolo-\>enabled,$conf-\>module_lolo-\>enabled)												// Condition to show each dictionary
    );
    */


    // Boxes/Widgets
	// Add here list of php file(s) stored in module_lolo/core/boxes that contains class to show a widget.
    $this-\>boxes = array(
    	0=\>array('file'=\>'module_lolowidget1.php@module_lolo','note'=\>'Widget provided by Module_lolo','enabledbydefaulton'=\>'Home'),
    	//1=\>array('file'=\>'module_lolowidget2.php@module_lolo','note'=\>'Widget provided by Module_lolo'),
    	//2=\>array('file'=\>'module_lolowidget3.php@module_lolo','note'=\>'Widget provided by Module_lolo')
    );


	// Cronjobs (List of cron jobs entries to add when module is enabled)
	$this-\>cronjobs = array(
		0=\>array('label'=\>'MyJob label', 'jobtype'=\>'method', 'class'=\>'/module_lolo/class/module_lolomyjob.class.php', 'objectname'=\>'Module_loloMyJob', 'method'=\>'myMethod', 'parameters'=\>'', 'comment'=\>'Comment', 'frequency'=\>2, 'unitfrequency'=\>3600, 'status'=\>0, 'test'=\>true)
	);
	// Example: $this-\>cronjobs=array(0=\>array('label'=\>'My label', 'jobtype'=\>'method', 'class'=\>'/dir/class/file.class.php', 'objectname'=\>'MyClass', 'method'=\>'myMethod', 'parameters'=\>'', 'comment'=\>'Comment', 'frequency'=\>2, 'unitfrequency'=\>3600, 'status'=\>0, 'test'=\>true),
	//                                1=\>array('label'=\>'My label', 'jobtype'=\>'command', 'command'=\>'', 'parameters'=\>'', 'comment'=\>'Comment', 'frequency'=\>1, 'unitfrequency'=\>3600*24, 'status'=\>0, 'test'=\>true)
	// );


	// Permissions
	$this-\>rights = array();		// Permission array used by this module

	$r=0;
	$this-\>rights[$r][0] = $this-\>numero \+ $r;	// Permission id (must not be already used)
	$this-\>rights[$r][1] = 'Read objects of My Module';	// Permission label
	$this-\>rights[$r][3] = 1; 					// Permission by default for new user (0/1)
	$this-\>rights[$r][4] = 'read';				// In php code, permission will be checked by test if ($user-\>rights-\>module_lolo-\>level1-\>level2)
	$this-\>rights[$r][5] = '';				    // In php code, permission will be checked by test if ($user-\>rights-\>module_lolo-\>level1-\>level2)

	$r++;
	$this-\>rights[$r][0] = $this-\>numero \+ $r;	// Permission id (must not be already used)
	$this-\>rights[$r][1] = 'Create/Update objects of My Module';	// Permission label
	$this-\>rights[$r][3] = 1; 					// Permission by default for new user (0/1)
	$this-\>rights[$r][4] = 'create';				// In php code, permission will be checked by test if ($user-\>rights-\>module_lolo-\>level1-\>level2)
	$this-\>rights[$r][5] = '';				    // In php code, permission will be checked by test if ($user-\>rights-\>module_lolo-\>level1-\>level2)

	$r++;
	$this-\>rights[$r][0] = $this-\>numero \+ $r;	// Permission id (must not be already used)
	$this-\>rights[$r][1] = 'Delete objects of My Module';	// Permission label
	$this-\>rights[$r][3] = 1; 					// Permission by default for new user (0/1)
	$this-\>rights[$r][4] = 'delete';				// In php code, permission will be checked by test if ($user-\>rights-\>module_lolo-\>level1-\>level2)
	$this-\>rights[$r][5] = '';				    // In php code, permission will be checked by test if ($user-\>rights-\>module_lolo-\>level1-\>level2)


	// Main menu entries
	$this-\>menu = array();			// List of menus to add
	$r=0;

	// Add here entries to declare new menus

	// Example to declare a new Top Menu entry and its Left menu entry:
	/\* BEGIN MODULEBUILDER TOPMENU */
	$this-\>menu[$r++]=array('fk_menu'=\>'',			                // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode
							'type'=\>'top',			                // This is a Top menu entry
							'titre'=\>'Module_lolo',
							'mainmenu'=\>'module_lolo',
							'leftmenu'=\>'',
							'url'=\>'/module_lolo/module_loloindex.php',
							'langs'=\>'module_lolo@module_lolo',	        // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
							'position'=\>1000+$r,
							'enabled'=\>'$conf-\>module_lolo-\>enabled',	// Define condition to show or hide menu entry. Use '$conf-\>module_lolo-\>enabled' if entry must be visible if module is enabled.
							'perms'=\>'1',			                // Use 'perms'=\>'$user-\>rights-\>module_lolo-\>level1-\>level2' if you want your menu with a permission rules
							'target'=\>'',
							'user'=\>2);				                // 0=Menu for internal users, 1=external users, 2=both

	/\* END MODULEBUILDER TOPMENU */

	// Example to declare a Left Menu entry into an existing Top menu entry:
	/\* BEGIN MODULEBUILDER LEFTMENU MYOBJECT
	$this-\>menu[$r++]=array(	'fk_menu'=\>'fk_mainmenu=module_lolo',	    // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode
							'type'=\>'left',			                // This is a Left menu entry
							'titre'=\>'List Test_lolo',
							'mainmenu'=\>'module_lolo',
							'leftmenu'=\>'module_lolo',
							'url'=\>'/module_lolo/test_lolo_list.php',
							'langs'=\>'module_lolo@module_lolo',	        // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
							'position'=\>1000+$r,
							'enabled'=\>'$conf-\>module_lolo-\>enabled',  // Define condition to show or hide menu entry. Use '$conf-\>module_lolo-\>enabled' if entry must be visible if module is enabled. Use '$leftmenu==\'system\'' to show if leftmenu system is selected.
							'perms'=\>'1',			                // Use 'perms'=\>'$user-\>rights-\>module_lolo-\>level1-\>level2' if you want your menu with a permission rules
							'target'=\>'',
							'user'=\>2);				                // 0=Menu for internal users, 1=external users, 2=both
	$this-\>menu[$r++]=array(	'fk_menu'=\>'fk_mainmenu=module_lolo,fk_leftmenu=module_lolo',	    // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode
							'type'=\>'left',			                // This is a Left menu entry
							'titre'=\>'New Test_lolo',
							'mainmenu'=\>'module_lolo',
							'leftmenu'=\>'module_lolo',
							'url'=\>'/module_lolo/test_lolo_page.php?action=create',
							'langs'=\>'module_lolo@module_lolo',	        // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
							'position'=\>1000+$r,
							'enabled'=\>'$conf-\>module_lolo-\>enabled',  // Define condition to show or hide menu entry. Use '$conf-\>module_lolo-\>enabled' if entry must be visible if module is enabled. Use '$leftmenu==\'system\'' to show if leftmenu system is selected.
							'perms'=\>'1',			                // Use 'perms'=\>'$user-\>rights-\>module_lolo-\>level1-\>level2' if you want your menu with a permission rules
							'target'=\>'',
							'user'=\>2);				                // 0=Menu for internal users, 1=external users, 2=both
	*/

	$this-\>menu[$r++]=array(
            				'fk_menu'=\>'fk_mainmenu=module_lolo',	    // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode
							'type'=\>'left',			                // This is a Left menu entry
							'titre'=\>'List Test_lolo',
							'mainmenu'=\>'module_lolo',
							'leftmenu'=\>'module_lolo_test_lolo',
							'url'=\>'/module_lolo/test_lolo_list.php',
							'langs'=\>'module_lolo@module_lolo',	        // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
							'position'=\>1100+$r,
							'enabled'=\>'$conf-\>module_lolo-\>enabled',  // Define condition to show or hide menu entry. Use '$conf-\>module_lolo-\>enabled' if entry must be visible if module is enabled. Use '$leftmenu==\'system\'' to show if leftmenu system is selected.
							'perms'=\>'1',			                // Use 'perms'=\>'$user-\>rights-\>module_lolo-\>level1-\>level2' if you want your menu with a permission rules
							'target'=\>'',
							'user'=\>2);				                // 0=Menu for internal users, 1=external users, 2=both
	$this-\>menu[$r++]=array(
            				'fk_menu'=\>'fk_mainmenu=module_lolo,fk_leftmenu=module_lolo_test_lolo',	    // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode
							'type'=\>'left',			                // This is a Left menu entry
							'titre'=\>'New Test_lolo',
							'mainmenu'=\>'module_lolo',
							'leftmenu'=\>'module_lolo_test_lolo',
							'url'=\>'/module_lolo/test_lolo_card.php?action=create',
							'langs'=\>'module_lolo@module_lolo',	        // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
							'position'=\>1100+$r,
							'enabled'=\>'$conf-\>module_lolo-\>enabled',  // Define condition to show or hide menu entry. Use '$conf-\>module_lolo-\>enabled' if entry must be visible if module is enabled. Use '$leftmenu==\'system\'' to show if leftmenu system is selected.
							'perms'=\>'1',			                // Use 'perms'=\>'$user-\>rights-\>module_lolo-\>level1-\>level2' if you want your menu with a permission rules
							'target'=\>'',
							'user'=\>2);				                // 0=Menu for internal users, 1=external users, 2=both
           		
	/\* END MODULEBUILDER LEFTMENU MYOBJECT */


	// Exports
	$r=1;

	// Example:
	/\* BEGIN MODULEBUILDER EXPORT MYOBJECT
	$this-\>export_code[$r]=$this-\>rights_class.'_'.$r;
	$this-\>export_label[$r]='Module_lolo';	                         // Translation key (used only if key ExportDataset_xxx_z not found)
    $this-\>export_enabled[$r]='1';                               // Condition to show export in list (ie: '$user-\>id==3'). Set to 1 to always show when module is enabled.
    $this-\>export_icon[$r]='generic:Module_lolo';					 // Put here code of icon then string for translation key of module name
	//$this-\>export_permission[$r]=array(array("module_lolo","level1","level2"));
    $this-\>export_fields_array[$r]=array('t.rowid'=\>"Id",'t.ref'=\>'Ref','t.label'=\>'Label','t.datec'=\>"DateCreation",'t.tms'=\>"DateUpdate");
	$this-\>export_TypeFields_array[$r]=array('t.rowid'=\>'Numeric', 't.ref'=\>'Text', 't.label'=\>'Label', 't.datec'=\>"Date", 't.tms'=\>"Date");
	// $this-\>export_entities_array[$r]=array('t.rowid'=\>"company",'s.nom'=\>'company','s.address'=\>'company','s.zip'=\>'company','s.town'=\>'company','s.fk_pays'=\>'company','s.phone'=\>'company','s.siren'=\>'company','s.siret'=\>'company','s.ape'=\>'company','s.idprof4'=\>'company','s.code_compta'=\>'company','s.code_compta_fournisseur'=\>'company','f.rowid'=\>"invoice",'f.facnumber'=\>"invoice",'f.datec'=\>"invoice",'f.datef'=\>"invoice",'f.total'=\>"invoice",'f.total_ttc'=\>"invoice",'f.tva'=\>"invoice",'f.paye'=\>"invoice",'f.fk_statut'=\>'invoice','f.note'=\>"invoice",'fd.rowid'=\>'invoice_line','fd.description'=\>"invoice_line",'fd.price'=\>"invoice_line",'fd.total_ht'=\>"invoice_line",'fd.total_tva'=\>"invoice_line",'fd.total_ttc'=\>"invoice_line",'fd.tva_tx'=\>"invoice_line",'fd.qty'=\>"invoice_line",'fd.date_start'=\>"invoice_line",'fd.date_end'=\>"invoice_line",'fd.fk_product'=\>'product','p.ref'=\>'product');
	// $this-\>export_dependencies_array[$r]=array('invoice_line'=\>'fd.rowid','product'=\>'fd.rowid');   // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them
	// $this-\>export_sql_start[$r]='SELECT DISTINCT ';
	// $this-\>export_sql_end[$r]  =' FROM '.MAIN_DB_PREFIX.'test_lolo as t';
	// $this-\>export_sql_order[$r] .=' ORDER BY t.ref';
	// $r++;
	END MODULEBUILDER EXPORT MYOBJECT */

}

/**
 *		Function called when module is enabled.
 *		The init function add constants, boxes, permissions and menus (defined in constructor) into Dolibarr database.
 *		It also creates data directories
 *
 \*      @param      string	$options    Options when enabling module ('', 'noboxes')
 \*      @return     int             	1 if OK, 0 if KO
 */
public function init($options='')
{
	$sql = array();

	$this-\>_load_tables('/module_lolo/sql/');

	// Create extrafields
	include_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
	$extrafields = new ExtraFields($this-\>db);
	//$result1=$extrafields-\>addExtraField('myattr1', "New Attr 1 label", 'boolean', 1, 3, 'thirdparty');
	//$result2=$extrafields-\>addExtraField('myattr2', "New Attr 2 label", 'string', 1, 10, 'project');

	return $this-\>_init($sql, $options);
}

/**
 \* Function called when module is disabled.
 \* Remove from database constants, boxes and permissions from Dolibarr database.
 \* Data directories are not deleted
 *
 \* @param      string	$options    Options when enabling module ('', 'noboxes')
 \* @return     int             	1 if OK, 0 if KO
 */
public function remove($options = '')
{
	$sql = array();

	return $this-\>_remove($sql, $options);
}

}

place dans ta classe action
pour voir

function printCommonFooter($parameters, &$object, &$action, $hookmanager)
{
print_r($parameters);

}

Ok mais les echo ne s’affichaient déjà pas.

tjrs rien…

Faut il que je place des droits pour que cela s’active ?

Je suis en superadmin.

et tes error_logs ?

1 « J'aime »

je ne sais pas. Je les trouve où?