diff --git a/htdocs/core/modules/printing/modules_printing.php b/htdocs/core/modules/printing/modules_printing.php index e7e16dc7979..a368a7265df 100644 --- a/htdocs/core/modules/printing/modules_printing.php +++ b/htdocs/core/modules/printing/modules_printing.php @@ -66,12 +66,17 @@ class PrintingDriver $type = 'printing'; $list = array(); - $moduledir = DOL_DOCUMENT_ROOT."/core/modules/printing/"; - $tmpfiles = dol_dir_list($moduledir, 'all', 0, '\modules.php', '', 'name', SORT_ASC, 0); - foreach ($tmpfiles as $record) { + $listoffiles = array(); + $dirmodels = array_merge(array('/core/modules/printing/'), (array) $conf->modules_parts['printing']); + foreach ($dirmodels as $dir) { + $tmpfiles = dol_dir_list(dol_buildpath($dir, 0), 'all', 0, '\modules.php', '', 'name', SORT_ASC, 0); + if (!empty($tmpfiles)) { + $listoffiles = array_merge($listoffiles, $tmpfiles); + } + } + foreach ($listoffiles as $record) { $list[$record['fullname']] = str_replace('.modules.php', '', $record['name']); - } - + } return $list; } diff --git a/htdocs/core/modules/printing/printgcp.modules.php b/htdocs/core/modules/printing/printgcp.modules.php index e1f765110a8..387f13ee332 100644 --- a/htdocs/core/modules/printing/printgcp.modules.php +++ b/htdocs/core/modules/printing/printgcp.modules.php @@ -68,6 +68,7 @@ class printing_printgcp extends PrintingDriver const PRINTERS_SEARCH_URL = 'https://www.google.com/cloudprint/search'; const PRINTERS_GET_JOBS = 'https://www.google.com/cloudprint/jobs'; const PRINT_URL = 'https://www.google.com/cloudprint/submit'; + const LANGFILE = 'printgcp'; /** * Constructor diff --git a/htdocs/core/modules/printing/printipp.modules.php b/htdocs/core/modules/printing/printipp.modules.php index 6b0e528aa1e..bf9f2fbd61b 100644 --- a/htdocs/core/modules/printing/printipp.modules.php +++ b/htdocs/core/modules/printing/printipp.modules.php @@ -60,6 +60,8 @@ class printing_printipp extends PrintingDriver */ public $db; + const LANGFILE = 'printipp'; + /** * Constructor diff --git a/htdocs/modulebuilder/template/core/modules/modMyModule.class.php b/htdocs/modulebuilder/template/core/modules/modMyModule.class.php index 46943c6c9ab..8922bc00eb5 100644 --- a/htdocs/modulebuilder/template/core/modules/modMyModule.class.php +++ b/htdocs/modulebuilder/template/core/modules/modMyModule.class.php @@ -90,6 +90,8 @@ class modMyModule extends DolibarrModules 'barcode' => 0, // Set this to 1 if module has its own models directory (core/modules/xxx) 'models' => 0, + // Set this to 1 if module has its own printing directory (core/modules/printing) + 'printing' => 0, // Set this to 1 if module has its own theme directory (theme) 'theme' => 0, // Set this to relative path of css file if module has its own css file diff --git a/htdocs/printing/admin/printing.php b/htdocs/printing/admin/printing.php index 2f906c68382..b810be417ae 100644 --- a/htdocs/printing/admin/printing.php +++ b/htdocs/printing/admin/printing.php @@ -69,8 +69,7 @@ if ($action == 'setconst' && $user->admin) if (!$result > 0) $error++; } - if (!$error) - { + if (!$error) { $db->commit(); setEventMessages($langs->trans("SetupSaved"), null); } else { @@ -87,8 +86,7 @@ if ($action == 'setvalue' && $user->admin) $result = dolibarr_set_const($db, $varname, $value, 'chaine', 0, '', $conf->entity); if (!$result > 0) $error++; - if (!$error) - { + if (!$error) { $db->commit(); setEventMessages($langs->trans("SetupSaved"), null); } else { @@ -131,10 +129,17 @@ if ($mode == 'setup' && $user->admin) $submit_enabled = 0; if (!empty($driver)) { - require_once DOL_DOCUMENT_ROOT.'/core/modules/printing/'.$driver.'.modules.php'; + $dirmodels = array_merge(array('/core/modules/printing/'), (array) $conf->modules_parts['printing']); + foreach ($dirmodels as $dir) { + if (file_exists(dol_buildpath($dir, 0).$driver.'.modules.php')) { + $classfile = dol_buildpath($dir, 0).$driver.'.modules.php'; + break; + } + } + require_once $classfile; $classname = 'printing_'.$driver; - $langs->load($driver); $printer = new $classname($db); + $langs->load($printer::LANGFILE); $i = 0; $submit_enabled = 0; @@ -246,22 +251,27 @@ if ($mode == 'config' && $user->admin) $object = new PrintingDriver($db); $result = $object->listDrivers($db, 10); + $dirmodels = array_merge(array('/core/modules/printing/'), (array) $conf->modules_parts['printing']); foreach ($result as $driver) { - require_once DOL_DOCUMENT_ROOT.'/core/modules/printing/'.$driver.'.modules.php'; + foreach ($dirmodels as $dir) { + if (file_exists(dol_buildpath($dir, 0).$driver.'.modules.php')) { + $classfile = dol_buildpath($dir, 0).$driver.'.modules.php'; + break; + } + } + require_once $classfile; $classname = 'printing_'.$driver; - $langs->load($driver); $printer = new $classname($db); + $langs->load($printer::LANGFILE); //print '
'.print_r($printer, true).''; print '