From 8a6d3aa6339410298ccf8339ed1fbf527fe8b48c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 11 Feb 2015 14:22:44 +0100 Subject: [PATCH] Clean module print system --- htdocs/core/modules/modPrinting.class.php | 3 +- .../modules/printing/printgcp.modules.php | 8 ++-- .../modules/printing/printipp.modules.php | 26 +++++++------ htdocs/langs/en_US/printing.lang | 10 ++++- htdocs/printing/admin/printing.php | 32 +++++++++------- htdocs/printing/lib/printing.lib.php | 37 ++++++++++++------- 6 files changed, 71 insertions(+), 45 deletions(-) diff --git a/htdocs/core/modules/modPrinting.class.php b/htdocs/core/modules/modPrinting.class.php index f578c463d43..91839139f41 100644 --- a/htdocs/core/modules/modPrinting.class.php +++ b/htdocs/core/modules/modPrinting.class.php @@ -50,7 +50,8 @@ class modPrinting extends DolibarrModules $this->family = "other"; // Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module) $this->name = preg_replace('/^mod/i','',get_class($this)); - $this->description = "Enable Printing System."; + // Module description, used if translation string 'ModuleXXXDesc' not found (where XXX is value of numeric property 'numero' of module) + $this->description = "Enable Direct Printing System."; $this->version = 'dolibarr'; // 'development' or 'experimental' or 'dolibarr' or version $this->const_name = 'MAIN_MODULE_'.strtoupper($this->name); // Where to store the module in setup page (0=common,1=interface,2=others,3=very specific) diff --git a/htdocs/core/modules/printing/printgcp.modules.php b/htdocs/core/modules/printing/printgcp.modules.php index 2d4cb8a2c98..e5fbcdbd3bc 100644 --- a/htdocs/core/modules/printing/printgcp.modules.php +++ b/htdocs/core/modules/printing/printgcp.modules.php @@ -26,8 +26,7 @@ include_once DOL_DOCUMENT_ROOT.'/core/modules/printing/modules_printing.php'; /** - * \class mailing_example - * \brief Class to provide printing with Google Cloud Print + * Class to provide printing with Google Cloud Print */ class printing_printgcp extends PrintingDriver { @@ -175,7 +174,7 @@ class printing_printgcp extends PrintingDriver if ($subdir!='') $fileprint.='/'.$subdir; $fileprint.='/'.$file; // select printer uri for module order, propal,... - $sql = 'SELECT rowid, printer_id, copy FROM '.MAIN_DB_PREFIX.'printing WHERE module="'.$module.'" AND driver="printgcp" AND userid='.$user->id; + $sql = "SELECT rowid, printer_id, copy FROM ".MAIN_DB_PREFIX."printing WHERE module='".$module."' AND driver='printgcp' AND userid=".$user->id; $result = $db->query($sql); if ($result) { @@ -196,6 +195,7 @@ class printing_printgcp extends PrintingDriver } } } + else dol_print_error($db); $this->sendPrintToPrinter($printer_id, $file, $fileprint, 'application/pdf'); } @@ -204,7 +204,7 @@ class printing_printgcp extends PrintingDriver * Sends document to the printer * * @param string $printerid Printer id returned by Google Cloud Print - * @param string $printjobtitle Job Title + * @param string $printjobtitle Job Title * @param string $filepath File Path to be send to Google Cloud Print * @param string $contenttype File content type by example application/pdf, image/png * @return array status array diff --git a/htdocs/core/modules/printing/printipp.modules.php b/htdocs/core/modules/printing/printipp.modules.php index c8a19bffa31..3fbb66fb088 100644 --- a/htdocs/core/modules/printing/printipp.modules.php +++ b/htdocs/core/modules/printing/printipp.modules.php @@ -26,8 +26,7 @@ include_once DOL_DOCUMENT_ROOT.'/core/modules/printing/modules_printing.php'; /** - * \class mailing_example - * \brief Class to provide printing with PrintIPP + * Class to provide printing with PrintIPP */ class printing_printipp extends PrintingDriver { @@ -61,8 +60,8 @@ class printing_printipp extends PrintingDriver $this->password=$conf->global->PRINTIPP_PASSWORD; $this->conf[] = array('varname'=>'PRINTIPP_HOST', 'required'=>1, 'example'=>'localhost', 'type'=>'text'); $this->conf[] = array('varname'=>'PRINTIPP_PORT', 'required'=>1, 'example'=>'631', 'type'=>'text'); - $this->conf[] = array('varname'=>'PRINTIPP_USER', 'required'=>0, 'example'=>'', 'type'=>'text'); - $this->conf[] = array('varname'=>'PRINTIPP_PASSWORD', 'required'=>0, 'example'=>'', 'type'=>'password'); + $this->conf[] = array('varname'=>'PRINTIPP_USER', 'required'=>0, 'example'=>'', 'type'=>'text', 'moreattributes'=>'autocomplete="off"'); + $this->conf[] = array('varname'=>'PRINTIPP_PASSWORD', 'required'=>0, 'example'=>'', 'type'=>'password', 'moreattributes'=>'autocomplete="off"'); } /** @@ -79,7 +78,7 @@ class printing_printipp extends PrintingDriver global $conf, $user, $db; include_once DOL_DOCUMENT_ROOT.'/includes/printipp/CupsPrintIPP.php'; - + $ipp = new CupsPrintIPP(); $ipp->setLog(DOL_DATA_ROOT.'/dolibarr_printipp.log','file',3); // logging very verbose $ipp->setHost($this->host); @@ -89,28 +88,31 @@ class printing_printipp extends PrintingDriver if (! empty($this->user)) $ipp->setAuthentication($this->user,$this->password); // select printer uri for module order, propal,... - $sql = 'SELECT rowid,printer_id,copy FROM '.MAIN_DB_PREFIX.'printing WHERE module="'.$module.'" AND driver="printipp" AND userid='.$user->id; + $sql = "SELECT rowid,printer_id,copy FROM ".MAIN_DB_PREFIX."printing WHERE module = '".$module."' AND driver = 'printipp' AND userid = ".$user->id; $result = $db->query($sql); if ($result) { $obj = $this->db->fetch_object($result); if ($obj) { + dol_syslog("Found a default printer for user ".$user->id." = ".$obj->printer_id); $ipp->setPrinterURI($obj->printer_id); } else { if (! empty($conf->global->PRINTIPP_URI_DEFAULT)) { + dol_syslog("Will use default printer conf->global->PRINTIPP_URI_DEFAULT = ".$conf->global->PRINTIPP_URI_DEFAULT); $ipp->setPrinterURI($conf->global->PRINTIPP_URI_DEFAULT); } else - { + { return 'NoDefaultPrinterDefined'; } } } - + else dol_print_error($db); + // Set number of copy $ipp->setCopies($obj->copy); $fileprint=$conf->{$module}->dir_output; @@ -118,7 +120,7 @@ class printing_printipp extends PrintingDriver $fileprint.='/'.$file; $ipp->setData($fileprint); $ipp->printJob(); - + return ''; } @@ -170,8 +172,10 @@ class printing_printipp extends PrintingDriver $html.= img_picto($langs->trans("Default"),'on'); } else - $html.= ''.img_picto($langs->trans("Disabled"),'off').''; - $html.= ''; + { + $html.= ''.img_picto($langs->trans("Disabled"),'off').''; + } + $html.= ''; $html.= ''."\n"; } diff --git a/htdocs/langs/en_US/printing.lang b/htdocs/langs/en_US/printing.lang index 77c63884636..e90f8efed0b 100644 --- a/htdocs/langs/en_US/printing.lang +++ b/htdocs/langs/en_US/printing.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - printing -PrintingSetup=Setup of Printing System -PrintingDesc=This module adds a Print button to send documents directly to a printer with various module. +PrintingSetup=Setup of Direct Printing System +PrintingDesc=This module adds a Print button to send documents directly to a printer (without opening document into an application) with various module. ModuleDriverSetup=Setup Module Driver PrintingDriverDesc=Configuration variables for printing driver. ListDrivers=List of drivers @@ -8,3 +8,9 @@ PrintTestDesc=List of Printers. FileWasSentToPrinter=File %s was sent to printer NoActivePrintingModuleFound=No active module to print document PleaseSelectaDriverfromList=Please select a driver from list. +SetupDriver=Driver setup +TestDriver=Test +TargetedPrinter=Targeted printer +UserConf=Setup per user +Module112000Name=Direct Printing +Module112000Desc=Enable Direct Printing System diff --git a/htdocs/printing/admin/printing.php b/htdocs/printing/admin/printing.php index 63784e560f0..572b5f1a379 100644 --- a/htdocs/printing/admin/printing.php +++ b/htdocs/printing/admin/printing.php @@ -109,15 +109,15 @@ llxHeader('',$langs->trans("PrintingSetup")); $linkback=''.$langs->trans("BackToModuleList").''; print_fiche_titre($langs->trans("PrintingSetup"),$linkback,'setup'); -$head=printingadmin_prepare_head(); +$head=printingadmin_prepare_head($mode); if ($mode == 'setup' && $user->admin) { - print '
'; + print ''; print ''; print ''; - dol_fiche_head($head, $mode, $langs->trans("ModuleDriverSetup"), 0, 'technic'); + dol_fiche_head($head, $mode, $langs->trans("ModuleSetup"), 0, 'technic'); print $langs->trans("PrintingDriverDesc".$driver)."

\n"; @@ -128,18 +128,22 @@ if ($mode == 'setup' && $user->admin) print ''.$langs->trans("Value").''; print "\n"; - if (! empty($driver)) { + if (! empty($driver)) + { require_once DOL_DOCUMENT_ROOT.'/core/modules/printing/'.$driver.'.modules.php'; $classname = 'printing_'.$driver; $langs->load($driver); $printer = new $classname($db); //print '
'.print_r($printer, true).'
'; $i=0; - foreach ($printer->conf as $key) { + foreach ($printer->conf as $key) + { $var=!$var; print ''; print ''.$langs->trans($key['varname']).''; - print ''; + print ''; print ''; print ' '.($key['example']!=''?$langs->trans("Example").' : '.$key['example']:''); print ''; @@ -150,7 +154,8 @@ if ($mode == 'setup' && $user->admin) } print ''; - if (! empty($driver)) { + if (! empty($driver)) + { print '
'; } print ''; @@ -162,7 +167,7 @@ if ($mode == 'config' && $user->admin) dol_fiche_head($head, $mode, $langs->trans("ModuleSetup"), 0, 'technic'); print $langs->trans("PrintingDesc")."

\n"; - + print ''."\n"; $var=true; @@ -170,7 +175,7 @@ if ($mode == 'config' && $user->admin) print ''; print ''; print ''; - print ''; + print ''; print "\n"; $object = new PrintingDriver($db); @@ -212,12 +217,13 @@ if ($mode == 'config' && $user->admin) if ($mode == 'test' && $user->admin) { - dol_fiche_head($head, $mode, $langs->trans("PrintingTest"), 0, 'technic'); + dol_fiche_head($head, $mode, $langs->trans("ModuleSetup"), 0, 'technic'); print $langs->trans('PrintTestDesc'.$driver)."

\n"; - + print '
'.$langs->trans("Description").''.$langs->trans("Active").''.$langs->trans("Setup").''.$langs->trans("Test").''.$langs->trans("TargetedPrinter").'
'; - if (! empty($driver)) { + if (! empty($driver)) + { require_once DOL_DOCUMENT_ROOT.'/core/modules/printing/'.$driver.'.modules.php'; $classname = 'printing_'.$driver; $langs->load($driver); @@ -235,7 +241,7 @@ if ($mode == 'test' && $user->admin) if ($mode == 'userconf' && $user->admin) { - dol_fiche_head($head, $mode, $langs->trans("UserConf"), 0, 'technic'); + dol_fiche_head($head, $mode, $langs->trans("ModuleSetup"), 0, 'technic'); print $langs->trans('PrintUserConfDesc'.$driver)."

\n"; diff --git a/htdocs/printing/lib/printing.lib.php b/htdocs/printing/lib/printing.lib.php index 1d09daba0dc..0c4d84c6302 100644 --- a/htdocs/printing/lib/printing.lib.php +++ b/htdocs/printing/lib/printing.lib.php @@ -26,9 +26,10 @@ /** * Define head array for tabs of printing tools setup pages * - * @return Array of head + * @param $mode string Mode + * @return Array of head */ -function printingadmin_prepare_head() +function printingadmin_prepare_head($mode) { global $langs, $conf; @@ -40,20 +41,28 @@ function printingadmin_prepare_head() $head[$h][2] = 'config'; $h++; - $head[$h][0] = DOL_URL_ROOT."/printing/admin/printing.php?mode=setup"; - $head[$h][1] = $langs->trans("SetupDriver"); - $head[$h][2] = 'setup'; - $h++; + if ($mode == 'setup') + { + $head[$h][0] = DOL_URL_ROOT."/printing/admin/printing.php?mode=setup"; + $head[$h][1] = $langs->trans("SetupDriver"); + $head[$h][2] = 'setup'; + $h++; + } - $head[$h][0] = DOL_URL_ROOT."/printing/admin/printing.php?mode=test"; - $head[$h][1] = $langs->trans("TestDriver"); - $head[$h][2] = 'test'; - $h++; + if ($mode == 'test') + { + $head[$h][0] = DOL_URL_ROOT."/printing/admin/printing.php?mode=test"; + $head[$h][1] = $langs->trans("TargetedPrinter"); + $head[$h][2] = 'test'; + $h++; + } - $head[$h][0] = DOL_URL_ROOT."/printing/admin/printing.php?mode=userconf"; - $head[$h][1] = $langs->trans("UserConf"); - $head[$h][2] = 'userconf'; - $h++; + /** TODO This feature seem to be not ready yet. + $head[$h][0] = DOL_URL_ROOT."/printing/admin/printing.php?mode=userconf"; + $head[$h][1] = $langs->trans("UserConf"); + $head[$h][2] = 'userconf'; + $h++; + */ //$object=new stdClass();