From 078d01b4ee38f45a3f736ce101bad1e2d2359739 Mon Sep 17 00:00:00 2001 From: Grand Philippe Date: Sat, 21 Apr 2012 18:31:20 +0200 Subject: [PATCH 1/6] Prepair to display receiptdocument within a custom place and uniformize code --- htdocs/admin/livraison.php | 222 +++++++++++++++++-------------------- 1 file changed, 99 insertions(+), 123 deletions(-) diff --git a/htdocs/admin/livraison.php b/htdocs/admin/livraison.php index f0c857a7ca2..01b60b15c97 100644 --- a/htdocs/admin/livraison.php +++ b/htdocs/admin/livraison.php @@ -6,6 +6,7 @@ * Copyright (C) 2004 Eric Seigne * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2011-2012 Juanjo Menent + * Copyright (C) 2011-2012 Philippe Grand * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -36,8 +37,11 @@ $langs->load("deliveries"); if (!$user->admin) accessforbidden(); -$action = GETPOST('action','alpha'); -$value = GETPOST('value','alpha'); +$action = GETPOST('action','alpha'); +$value = GETPOST('value','alpha'); +$label = GETPOST('label','alpha'); +$scandir = GETPOST('scandir','alpha'); +$type='delivery'; /* * Actions @@ -61,105 +65,6 @@ if ($action == 'updateMask') } } -if ($action == 'specimen') -{ - $modele=GETPOST('module','alpha'); - - $sending = new Livraison($db); - $sending->initAsSpecimen(); - //$sending->fetch_commande(); - - // Charge le modele - $dir = DOL_DOCUMENT_ROOT . "/core/modules/livraison/pdf/"; - $file = "pdf_".$modele.".modules.php"; - if (file_exists($dir.$file)) - { - $classname = "pdf_".$modele; - require_once($dir.$file); - - $obj = new $classname($db); - - if ($obj->write_file($sending,$langs) > 0) - { - header("Location: ".DOL_URL_ROOT."/document.php?modulepart=livraison&file=SPECIMEN.pdf"); - return; - } - else - { - $mesg=''.$obj->error.''; - dol_syslog($obj->error, LOG_ERR); - } - } - else - { - $mesg=''.$langs->trans("ErrorModuleNotFound").''; - dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR); - } -} - -if ($action == 'set') -{ - $label = GETPOST('label','alpha'); - $scandir = GETPOST('scandir','alpha'); - - $type='delivery'; - $sql = "INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity, libelle, description)"; - $sql.= " VALUES ('".$db->escape($value)."','".$type."',".$conf->entity.", "; - $sql.= ($label?"'".$db->escape($label)."'":'null').", "; - $sql.= (! empty($scandir)?"'".$db->escape($scandir)."'":"null"); - $sql.= ")"; - $resql=$db->query($sql); -} - -if ($action == 'del') -{ - $type='delivery'; - $sql = "DELETE FROM ".MAIN_DB_PREFIX."document_model"; - $sql.= " WHERE nom = '".$db->escape($value)."'"; - $sql.= " AND type = '".$type."'"; - $sql.= " AND entity = ".$conf->entity; - - if ($db->query($sql)) - { - if ($conf->global->LIVRAISON_ADDON_PDF == "$value") dolibarr_del_const($db, 'LIVRAISON_ADDON_PDF',$conf->entity); - } -} - -if ($action == 'setdoc') -{ - $label = GETPOST('label','alpha'); - $scandir = GETPOST('scandir','alpha'); - $db->begin(); - - if (dolibarr_set_const($db, "LIVRAISON_ADDON_PDF",$value,'chaine',0,'',$conf->entity)) - { - $conf->global->LIVRAISON_ADDON_PDF = $value; - } - - // On active le modele - $type='delivery'; - $sql_del = "DELETE FROM ".MAIN_DB_PREFIX."document_model"; - $sql_del.= " WHERE nom = '".$db->escape($value)."'"; - $sql_del.= " AND type = '".$type."'"; - $sql_del.= " AND entity = ".$conf->entity; - $result1=$db->query($sql_del); - - $sql = "INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity, libelle, description)"; - $sql.= " VALUES ('".$db->escape($value)."', '".$type."', ".$conf->entity.", "; - $sql.= ($label?"'".$db->escape($label)."'":'null').", "; - $sql.= (! empty($scandir)?"'".$db->escape($scandir)."'":"null"); - $sql.= ")"; - $result2=$db->query($sql); - if ($result1 && $result2) - { - $db->commit(); - } - else - { - $db->rollback(); - } -} - if ($action == 'set_DELIVERY_FREE_TEXT') { $free=GETPOST('DELIVERY_FREE_TEXT','alpha'); @@ -177,6 +82,82 @@ if ($action == 'set_DELIVERY_FREE_TEXT') } } +if ($action == 'specimen') +{ + $modele=GETPOST('module','alpha'); + + $sending = new Livraison($db); + $sending->initAsSpecimen(); + + // Search template files + $file=''; $classname=''; $filefound=0; + $dirmodels=array_merge(array('/'),(array) $conf->modules_parts['models']); + foreach($dirmodels as $reldir) + { + $file=dol_buildpath($reldir."core/modules/livraison/pdf/pdf_".$modele.".modules.php",0); + if (file_exists($file)) + { + $filefound=1; + $classname = "pdf_".$modele; + break; + } + } + + if ($filefound) + { + require_once($file); + + $module = new $classname($db); + + if ($module->write_file($sending,$langs) > 0) + { + header("Location: ".DOL_URL_ROOT."/document.php?modulepart=livraison&file=SPECIMEN.pdf"); + return; + } + else + { + $mesg=''.$module->error.''; + dol_syslog($module->error, LOG_ERR); + } + } + else + { + $mesg=''.$langs->trans("ErrorModuleNotFound").''; + dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR); + } +} + +if ($action == 'set') +{ + $ret = addDocumentModel($value, $type, $label, $scandir); +} + +if ($action == 'del') +{ + $ret = delDocumentModel($value, $type); + if ($ret > 0) + { + if ($conf->global->LIVRAISON_ADDON_PDF == "$value") dolibarr_del_const($db, 'LIVRAISON_ADDON_PDF',$conf->entity); + } +} + +if ($action == 'setdoc') +{ + if (dolibarr_set_const($db, "LIVRAISON_ADDON_PDF",$value,'chaine',0,'',$conf->entity)) + { + // La constante qui a ete lue en avant du nouveau set + // on passe donc par une variable pour avoir un affichage coherent + $conf->global->LIVRAISON_ADDON_PDF = $value; + } + + // On active le modele + $ret = delDocumentModel($value, $type); + if ($ret > 0) + { + $ret = addDocumentModel($value, $type, $label, $scandir); + } +} + if ($action == 'setmod') { // TODO Verifier si module numerotation choisi peut etre active @@ -190,10 +171,12 @@ if ($action == 'setmod') * View */ -$form=new Form($db); +$dirmodels=array_merge(array('/'),(array) $conf->modules_parts['models']); llxHeader("",""); +$form=new Form($db); + $linkback=''.$langs->trans("BackToModuleList").''; print_fiche_titre($langs->trans("SendingsSetup"),$linkback,'setup'); print '
'; @@ -236,9 +219,9 @@ print ''."\n"; clearstatcache(); -foreach ($conf->file->dol_document_root as $dirroot) +foreach ($dirmodels as $reldir) { - $dir = $dirroot . "/core/modules/livraison/"; + $dir = dol_buildpath($reldir."core/modules/livraison/"); if (is_dir($dir)) { @@ -365,9 +348,10 @@ print "\n"; clearstatcache(); -foreach ($conf->file->dol_document_root as $dirroot) +$var=true; +foreach ($dirmodels as $reldir) { - $dir = $dirroot . "/core/modules/livraison/pdf/"; + $dir = dol_buildpath($reldir."core/modules/livraison/pdf/"); if (is_dir($dir)) { @@ -382,7 +366,8 @@ foreach ($conf->file->dol_document_root as $dirroot) $classname = substr($file, 0, dol_strlen($file) - 12); $var=!$var; - print ""; + + print ''; print $name; print "\n"; require_once($dir.$file); @@ -394,17 +379,10 @@ foreach ($conf->file->dol_document_root as $dirroot) // Activ if (in_array($name, $def)) { - print "\n"; - //if ($conf->global->LIVRAISON_ADDON_PDF != "$name") - //{ - print 'scandir.'&label='.urlencode($module->name).'">'; - print img_picto($langs->trans("Enabled"),'switch_on'); - print ''; - //} - //else - //{ - // print img_picto($langs->trans("Enabled"),'switch_on'); - //} + print "\n"; + print 'scandir.'&label='.urlencode($module->name).'">'; + print img_picto($langs->trans("Enabled"),'switch_on'); + print ''; print ""; } else @@ -447,11 +425,9 @@ foreach ($conf->file->dol_document_root as $dirroot) } print ''; - /* -* -* -*/ + * Autres Options + */ print "
"; print_titre($langs->trans("OtherOptions")); @@ -482,4 +458,4 @@ dol_htmloutput_mesg($mesg); $db->close(); llxFooter(); -?> +?> \ No newline at end of file From bc3f121d5a082b62b894893b74f43259d7e83ef0 Mon Sep 17 00:00:00 2001 From: Grand Philippe Date: Sat, 21 Apr 2012 18:40:37 +0200 Subject: [PATCH 2/6] fix : receipt specimen was not displayed --- htdocs/livraison/class/livraison.class.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/livraison/class/livraison.class.php b/htdocs/livraison/class/livraison.class.php index 5377fee4f97..e709dc4d6db 100644 --- a/htdocs/livraison/class/livraison.class.php +++ b/htdocs/livraison/class/livraison.class.php @@ -3,6 +3,7 @@ * Copyright (C) 2005-2010 Regis Houssin * Copyright (C) 2006-2007 Laurent Destailleur * Copyright (C) 2007 Franky Van Liedekerke + * Copyright (C) 2011-2012 Philippe Grand * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -773,7 +774,7 @@ class Livraison extends CommonObject // Initialise parametres $this->id=0; - $this->ref = 'SPECIMEN_RECEIPT'; + $this->ref = 'SPECIMEN'; $this->specimen=1; $this->socid = 1; $this->date_delivery = $now; @@ -905,4 +906,4 @@ class LivraisonLigne } -?> +?> \ No newline at end of file From 04f2b04dcf8639a8fb02688d821ec11061f49bf3 Mon Sep 17 00:00:00 2001 From: Grand Philippe Date: Sun, 22 Apr 2012 00:41:13 +0200 Subject: [PATCH 3/6] try to fix : shipping specimen model not displayed --- htdocs/admin/expedition.php | 4 ++-- htdocs/expedition/class/expedition.class.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/admin/expedition.php b/htdocs/admin/expedition.php index 2d0fdf18218..aa9259226ab 100644 --- a/htdocs/admin/expedition.php +++ b/htdocs/admin/expedition.php @@ -140,8 +140,8 @@ if ($action == 'specimen') } else { - $mesg=''.$obj->error.''; - dol_syslog($obj->error, LOG_ERR); + $mesg=''.$module->error.''; + dol_syslog($module->error, LOG_ERR); } } else diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index b34c255f61b..d3fd5832a78 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -1060,7 +1060,7 @@ class Expedition extends CommonObject // Initialise parametres $this->id=0; - $this->ref = 'SPECIMEN_SHIP'; + $this->ref = 'SPECIMEN'; $this->specimen=1; $this->statut = 1; $this->livraison_id = 0; From c190d4ddf8edfbd4fb4fe99d499e79252bc4a455 Mon Sep 17 00:00:00 2001 From: Grand Philippe Date: Sun, 22 Apr 2012 09:28:39 +0200 Subject: [PATCH 4/6] fix : shipping specimen is displayed, and shipping modele can be used from custom place --- htdocs/admin/expedition.php | 26 ++++----- .../modules/expedition/modules_expedition.php | 54 +++++++++---------- 2 files changed, 36 insertions(+), 44 deletions(-) diff --git a/htdocs/admin/expedition.php b/htdocs/admin/expedition.php index aa9259226ab..3d0fac4c72b 100644 --- a/htdocs/admin/expedition.php +++ b/htdocs/admin/expedition.php @@ -118,11 +118,11 @@ if ($action == 'specimen') $dirmodels=array_merge(array('/'),(array) $conf->modules_parts['models']); foreach($dirmodels as $reldir) { - $file=dol_buildpath($reldir."core/modules/expedition/doc/pdf_".$modele.".modules.php",0); + $file=dol_buildpath($reldir."core/modules/expedition/doc/pdf_expedition_".$modele.".modules.php",0); if (file_exists($file)) { $filefound=1; - $classname = "pdf_".$modele; + $classname = "pdf_expedition_".$modele; break; } } @@ -339,10 +339,9 @@ foreach ($dirmodels as $reldir) while (($file = readdir($handle))!==false) { - if (preg_match('/^(mod_.*)\.php$/i',$file,$reg)) + if (substr($file, 0, 15) == 'mod_expedition_' && substr($file, dol_strlen($file)-3, 3) == 'php') { - $file = $reg[1]; - $classname = substr($file,4); + $file = substr($file, 0, dol_strlen($file)-4); require_once(DOL_DOCUMENT_ROOT ."/core/modules/expedition/".$file.".php"); @@ -477,7 +476,7 @@ foreach ($dirmodels as $reldir) $classname = substr($file, 0, dol_strlen($file) - 12); $var=!$var; - print ""; + print ''; print $name; print "\n"; require_once($dir.$file); @@ -489,17 +488,10 @@ foreach ($dirmodels as $reldir) // Active if (in_array($name, $def)) { - print "\n"; - //if ($conf->global->EXPEDITION_ADDON_PDF != $name) - //{ - print ''; - print img_picto($langs->trans("Activated"),'switch_on'); - print ''; - //} - //else - //{ - // print img_picto($langs->trans("Activated"),'switch_on'); - //} + print "\n"; + print ''; + print img_picto($langs->trans("Activated"),'switch_on'); + print ''; print ""; } else diff --git a/htdocs/core/modules/expedition/modules_expedition.php b/htdocs/core/modules/expedition/modules_expedition.php index f239178236e..b06872d3e0d 100644 --- a/htdocs/core/modules/expedition/modules_expedition.php +++ b/htdocs/core/modules/expedition/modules_expedition.php @@ -5,7 +5,7 @@ * Copyright (C) 2005-2011 Regis Houssin * Copyright (C) 2006 Andre Cianfarani * Copyright (C) 2011 Juanjo Menent - * Copyright (C) 2011 Philippe Grand + * Copyright (C) 2011-2012 Philippe Grand * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -156,13 +156,8 @@ function expedition_pdf_create($db, $object, $modele, $outputlangs) $langs->load("sendings"); - // Increase limit for PDF build - $err=error_reporting(); - error_reporting(0); - @set_time_limit(120); - error_reporting($err); + $error=0; - $dir = "/core/modules/expedition/"; $srctemplatepath=''; // Positionne le modele sur le nom du modele a utiliser @@ -180,28 +175,33 @@ function expedition_pdf_create($db, $object, $modele, $outputlangs) // If selected modele is a filename template (then $modele="modelname:filename") $tmp=explode(':',$modele,2); - if (! empty($tmp[1])) - { - $modele=$tmp[0]; - $srctemplatepath=$tmp[1]; - } + if (! empty($tmp[1])) + { + $modele=$tmp[0]; + $srctemplatepath=$tmp[1]; + } - // Search template file + // Search template files $file=''; $classname=''; $filefound=0; - foreach(array('doc','pdf') as $prefix) + $dirmodels=array('/'); + if (is_array($conf->modules_parts['models'])) $dirmodels=array_merge($dirmodels,$conf->modules_parts['models']); + foreach($dirmodels as $reldir) { - $file = $prefix."_expedition_".$modele.".modules.php"; + foreach(array('doc','pdf') as $prefix) + { + $file = $prefix."_expedition_".$modele.".modules.php"; - // On verifie l'emplacement du modele - $file = dol_buildpath($dir.'doc/'.$file); - - if (file_exists($file)) - { - $filefound=1; - $classname=$prefix.'_expedition_'.$modele; - break; - } - } + // On verifie l'emplacement du modele + $file=dol_buildpath($reldir."core/modules/expedition/doc/".$file,0); + if (file_exists($file)) + { + $filefound=1; + $classname=$prefix.'_expedition_'.$modele; + break; + } + } + if ($filefound) break; + } // Charge le modele if ($filefound) @@ -215,7 +215,7 @@ function expedition_pdf_create($db, $object, $modele, $outputlangs) // We save charset_output to restore it because write_file can change it if needed for // output format that does not support UTF8. $sav_charset_output=$outputlangs->charset_output; - if ($obj->write_file($object, $outputlangs) > 0) + if ($obj->write_file($object, $outputlangs, $srctemplatepath) > 0) { $outputlangs->charset_output=$sav_charset_output; @@ -238,4 +238,4 @@ function expedition_pdf_create($db, $object, $modele, $outputlangs) return -1; } } -?> +?> \ No newline at end of file From 559c7974e966c856ec43acb6477948ba13a45678 Mon Sep 17 00:00:00 2001 From: Grand Philippe Date: Sun, 22 Apr 2012 10:02:12 +0200 Subject: [PATCH 5/6] shipping receipt modele can be used from a custom directory --- .../modules/livraison/modules_livraison.php | 56 ++++++++++++++----- 1 file changed, 43 insertions(+), 13 deletions(-) diff --git a/htdocs/core/modules/livraison/modules_livraison.php b/htdocs/core/modules/livraison/modules_livraison.php index 1454421b1fb..c9343e8ae95 100644 --- a/htdocs/core/modules/livraison/modules_livraison.php +++ b/htdocs/core/modules/livraison/modules_livraison.php @@ -3,6 +3,7 @@ * Copyright (C) 2004-2011 Laurent Destailleur * Copyright (C) 2004 Eric Seigne * Copyright (C) 2006-2011 Regis Houssin + * Copyright (C) 2011-2012 Philippe Grand * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -154,33 +155,62 @@ abstract class ModeleNumRefDeliveryOrder * @param Translate $outputlangs objet lang a utiliser pour traduction * @return int 0 if KO, 1 if OK */ -function delivery_order_pdf_create($db, $object, $model='', $outputlangs='') +function delivery_order_pdf_create($db, $object, $modele, $outputlangs='') { global $conf,$langs; + $langs->load("deliveries"); - $dir = "/core/modules/livraison/pdf/"; + $error=0; + + $srctemplatepath=''; // Positionne modele sur le nom du modele de bon de livraison a utiliser - if (! dol_strlen($model)) + if (! dol_strlen($modele)) { if ($conf->global->LIVRAISON_ADDON_PDF) { - $model = $conf->global->LIVRAISON_ADDON_PDF; + $modele = $conf->global->LIVRAISON_ADDON_PDF; } else { - print $langs->trans("Error")." ".$langs->trans("Error_LIVRAISON_ADDON_PDF_NotDefined"); - return 0; + $modele = 'typhon'; } } - // Charge le modele - $file = "pdf_".$model.".modules.php"; - // On verifie l'emplacement du modele - $file = dol_buildpath($dir.$file); - if (file_exists($file)) + + // If selected modele is a filename template (then $modele="modelname:filename") + $tmp=explode(':',$modele,2); + if (! empty($tmp[1])) + { + $modele=$tmp[0]; + $srctemplatepath=$tmp[1]; + } + + // Search template files + $file=''; $classname=''; $filefound=0; + $dirmodels=array('/'); + if (is_array($conf->modules_parts['models'])) $dirmodels=array_merge($dirmodels,$conf->modules_parts['models']); + foreach($dirmodels as $reldir) + { + foreach(array('doc','pdf') as $prefix) + { + $file = $prefix."_".$modele.".modules.php"; + + // On verifie l'emplacement du modele + $file=dol_buildpath($reldir."core/modules/livraison/pdf/".$file,0); + if (file_exists($file)) + { + $filefound=1; + $classname=$prefix.'_'.$modele; + break; + } + } + if ($filefound) break; + } + + // Charge le modele + if ($filefound) { - $classname = "pdf_".$model; require_once($file); $obj = new $classname($db); @@ -212,4 +242,4 @@ function delivery_order_pdf_create($db, $object, $model='', $outputlangs='') } } -?> +?> \ No newline at end of file From 078c0d07439a9ebf605e3c2175deba46af3abf98 Mon Sep 17 00:00:00 2001 From: Grand Philippe Date: Wed, 25 Apr 2012 17:09:02 +0200 Subject: [PATCH 6/6] to use personal contacts.tpl within personal theme --- htdocs/commande/contact.php | 62 +++++++++++++++++++++---------------- 1 file changed, 35 insertions(+), 27 deletions(-) diff --git a/htdocs/commande/contact.php b/htdocs/commande/contact.php index 9e4cfd2923b..df22b17b4fa 100644 --- a/htdocs/commande/contact.php +++ b/htdocs/commande/contact.php @@ -2,6 +2,7 @@ /* Copyright (C) 2005 Patrick Rouillon * Copyright (C) 2005-2011 Laurent Destailleur * Copyright (C) 2005-2012 Regis Houssin + * Copyright (C) 2011-2012 Philippe Grand * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -106,10 +107,10 @@ else if ($action == 'deletecontact' && $user->rights->commande->creer) } } -else if ($action == 'setaddress' && $user->rights->commande->creer) -{ - $object->fetch($id); - $object->setDeliveryAddress($_POST['fk_address']); +else if ($action == 'setaddress' && $user->rights->commande->creer) +{ + $object->fetch($id); + $object->setDeliveryAddress($_POST['fk_address']); } /* @@ -173,27 +174,27 @@ if ($id > 0 || ! empty($ref)) print "".$langs->trans("Company").""; print ''.$object->client->getNomUrl(1).''; - // Delivery address - if ($conf->global->SOCIETE_ADDRESSES_MANAGEMENT) - { - print ''; - print ''; - - if ($action != 'editdelivery_address' && $object->brouillon) print ''; - print '
'; - print $langs->trans('DeliveryAddress'); - print 'socid.'&id='.$object->id.'">'.img_edit($langs->transnoentitiesnoconv('SetDeliveryAddress'),1).'
'; - print ''; - - if ($action == 'editdelivery_address') - { - $formother->form_address($_SERVER['PHP_SELF'].'?id='.$object->id,$object->fk_delivery_address,GETPOST('socid','int'),'fk_address','commande',$object->id); - } - else - { - $formother->form_address($_SERVER['PHP_SELF'].'?id='.$object->id,$object->fk_delivery_address,GETPOST('socid','int'),'none','commande',$object->id); - } - print ''; + // Delivery address + if ($conf->global->SOCIETE_ADDRESSES_MANAGEMENT) + { + print ''; + print ''; + + if ($action != 'editdelivery_address' && $object->brouillon) print ''; + print '
'; + print $langs->trans('DeliveryAddress'); + print 'socid.'&id='.$object->id.'">'.img_edit($langs->transnoentitiesnoconv('SetDeliveryAddress'),1).'
'; + print ''; + + if ($action == 'editdelivery_address') + { + $formother->form_address($_SERVER['PHP_SELF'].'?id='.$object->id,$object->fk_delivery_address,GETPOST('socid','int'),'fk_address','commande',$object->id); + } + else + { + $formother->form_address($_SERVER['PHP_SELF'].'?id='.$object->id,$object->fk_delivery_address,GETPOST('socid','int'),'none','commande',$object->id); + } + print ''; } print ""; @@ -202,8 +203,15 @@ if ($id > 0 || ! empty($ref)) print '
'; - // Contacts lines - include(DOL_DOCUMENT_ROOT.'/core/tpl/contacts.tpl.php'); + // Select template for Contacts lines + if (file_exists(DOL_DOCUMENT_ROOT."/theme/".$conf->theme."/tpl/contacts.tpl.php")) + { + include(DOL_DOCUMENT_ROOT."/theme/".$conf->theme."/tpl/contacts.tpl.php"); + } + else + { + include(DOL_DOCUMENT_ROOT.'/core/tpl/contacts.tpl.php'); + } } else