From 28d1b606041b8db9314df2b1f7421bed63106bb2 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 26 May 2007 15:05:49 +0000 Subject: [PATCH] =?UTF-8?q?Fix:=20Probl=E8me=20sur=20les=20substitutions?= =?UTF-8?q?=20en=20mode=20tests=20mailing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/adherents/card_subscriptions.php | 50 +++++++++++------------ htdocs/adherents/cotisations.php | 6 +-- htdocs/admin/adherent.php | 30 +++++++++----- htdocs/admin/fckeditor.php | 22 +++++++--- htdocs/comm/mailing/fiche.php | 46 +++++++++++++-------- htdocs/conf/conf.class.php | 54 +++++++++++++------------ htdocs/html.formmail.class.php | 33 +++++++-------- htdocs/langs/en_US/admin.lang | 1 + htdocs/langs/en_US/mails.lang | 1 + htdocs/langs/fr_FR/admin.lang | 1 + htdocs/langs/fr_FR/mails.lang | 1 + htdocs/lib/CMailFile.class.php | 5 ++- htdocs/lib/functions.inc.php | 16 ++++++++ 13 files changed, 160 insertions(+), 106 deletions(-) diff --git a/htdocs/adherents/card_subscriptions.php b/htdocs/adherents/card_subscriptions.php index 398ed1e0cc8..dff1107be08 100644 --- a/htdocs/adherents/card_subscriptions.php +++ b/htdocs/adherents/card_subscriptions.php @@ -93,7 +93,7 @@ if ($_POST["action"] == 'cotisation' && ! $_POST["cancel"]) if ($adht->cotisation) { - if ($conf->global->ADHERENT_BANK_USE) + if ($conf->banque->enabled && $conf->global->ADHERENT_BANK_USE) { if (! $_POST["label"]) $errmsg=$langs->trans("ErrorFieldRequired",$langs->transnoentities("Label")); if (! $_POST["operation"]) $errmsg=$langs->trans("ErrorFieldRequired",$langs->transnoentities("PaymentMode")); @@ -371,35 +371,35 @@ if ($action == 'addsubscription' && $user->rights->adherent->cotisation->creer) { print ''.$langs->trans("Amount").' '.$langs->trans("Currency".$conf->monnaie).''; - if ($conf->global->ADHERENT_BANK_USE) + if ($conf->banque->enabled && $conf->global->ADHERENT_BANK_USE) { print ''.$langs->trans("FinancialAccount").''; $html->select_comptes($_POST["accountid"],'accountid',0,'',1); print "\n"; - - print ''.$langs->trans("PaymentMode").''; - $html->select_types_paiements($_POST["operation"],'operation'); - print "\n"; - - print ''.$langs->trans('Numero'); - print ' (Numéro chèque ou virement)'; // \todo a traduire - print ''; - print ''; - - print ''.$langs->trans('CheckTransmitter'); - print ' (Emetteur du chèque)'; // \todo a traduire - print ''; - print ''; - - print ''.$langs->trans('Bank'); - print ' (Banque du chèque)'; // \todo a traduire - print ''; - print ''; - - print ''.$langs->trans("Label").''; - print 'datefin?$adh->datefin:time())).'" >'; } + + print ''.$langs->trans("PaymentMode").''; + $html->select_types_paiements($_POST["operation"],'operation'); + print "\n"; + + print ''.$langs->trans('Numero'); + print ' (Numéro chèque ou virement)'; // \todo a traduire + print ''; + print ''; + + print ''.$langs->trans('CheckTransmitter'); + print ' (Emetteur du chèque)'; // \todo a traduire + print ''; + print ''; + + print ''.$langs->trans('Bank'); + print ' (Banque du chèque)'; // \todo a traduire + print ''; + print ''; + + print ''.$langs->trans("Label").''; + print 'datefin?$adh->datefin:time())).'" >'; } print ''.$langs->trans("SendAcknowledgementByMail").''; diff --git a/htdocs/adherents/cotisations.php b/htdocs/adherents/cotisations.php index 724d3e9ed46..476a36d7e7b 100644 --- a/htdocs/adherents/cotisations.php +++ b/htdocs/adherents/cotisations.php @@ -142,7 +142,7 @@ if ($result) print_liste_field_titre($langs->trans("Ref"),"cotisations.php","c.rowid",$param,"","",$sortfield); print_liste_field_titre($langs->trans("Date"),"cotisations.php","c.dateadh",$param,"","",$sortfield); print_liste_field_titre($langs->trans("Name"),"cotisations.php","d.nom",$param,"","",$sortfield); - if ($conf->global->ADHERENT_BANK_USE) + if ($conf->banque->enabled && $conf->global->ADHERENT_BANK_USE) { print_liste_field_titre($langs->trans("Bank"),"cotisations.php","b.fk_account",$pram,"","",$sortfield); } @@ -169,7 +169,7 @@ if ($result) print ''.$cotisation->getNomUrl(1).''; print ''.dolibarr_print_date($objp->dateadh)."\n"; print ''.$adherent->getNomUrl(1).''; - if ($conf->global->ADHERENT_BANK_USE) + if ($conf->banque->enabled && $conf->global->ADHERENT_BANK_USE) { if ($objp->fk_account) { @@ -206,7 +206,7 @@ if ($result) print "".$langs->trans("Total")."\n"; print " \n"; print " \n"; - if ($conf->global->ADHERENT_BANK_USE) + if ($conf->banque->enabled && $conf->global->ADHERENT_BANK_USE) { print ' '; } diff --git a/htdocs/admin/adherent.php b/htdocs/admin/adherent.php index c7dead7200f..a0172a59b6d 100644 --- a/htdocs/admin/adherent.php +++ b/htdocs/admin/adherent.php @@ -136,20 +136,28 @@ print "\n"; print ''; // Insertion cotisations dans compte financier +$var=!$var; +print '
'; +print ''; +print ''; +print ''; +print "".$langs->trans("AddSubscriptionIntoAccount").''; if ($conf->banque->enabled) { - $var=!$var; - print ''; - print ''; - print ''; - print ''; - print "".$langs->trans("AddSubscriptionIntoAccount").''; - print $form->selectyesno('constvalue',$conf->global->ADHERENT_BANK_USE,1); - print ''; - print ''; - print "\n"; - print '
'; + print ''; + print $form->selectyesno('constvalue',$conf->global->ADHERENT_BANK_USE,1); + print ''; + print ''; + print ''; } +else +{ + print ''; + print $langs->trans("WarningModuleNotActive",$langs->transnoentities("Module85Name")).' '.img_warning("",""); + print ''; +} +print "\n"; +print ''; print ''; print '
'; diff --git a/htdocs/admin/fckeditor.php b/htdocs/admin/fckeditor.php index 01672426227..0008548ed3f 100644 --- a/htdocs/admin/fckeditor.php +++ b/htdocs/admin/fckeditor.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2004-2007 Laurent Destailleur * Copyright (C) 2005-2006 Regis Houssin * * This program is free software; you can redistribute it and/or modify @@ -38,10 +38,10 @@ if (!$user->admin) // Constante et traduction de la description du module $modules = array( 'SOCIETE' => 'FCKeditorForCompany', -'PRODUCTDESC' => 'FCKeditorForProductDescription', -'PRODUCTNOTE' => 'FCKeditorForProductNote', +'PRODUCTDESC' => 'FCKeditorForProduct', 'DETAILS' => 'FCKeditorForProductDetails', -'MAILING' => 'FCKeditorForMailing' +'MAILING' => 'FCKeditorForMailing', +'MEMBER' => 'FCKeditorForMembers' ); // Conditions pour que l'option soit proposée $conditions = array( @@ -49,7 +49,16 @@ $conditions = array( 'PRODUCTDESC' => ($conf->produit->enabled||$conf->service->enabled), 'PRODUCTNOTE' => ($conf->produit->enabled||$conf->service->enabled), 'DETAILS' => ($conf->facture->enabled||$conf->propal->enabled||$conf->commande->enabled), -'MAILING' => $conf->mailing->enabled +'MAILING' => $conf->mailing->enabled, +'MEMBER' => $conf->adherent->enabled +); +// Picto +$picto = array( +'SOCIETE' => 'company', +'PRODUCTDESC' => 'product', +'DETAILS' => 'generic', +'MAILING' => 'email', +'MEMBER' => 'user' ); @@ -105,7 +114,7 @@ $var=true; print ''; print ''; -print ''; +print ''; print ''; print ''; print "\n"; @@ -118,6 +127,7 @@ foreach($modules as $const => $desc) $var=!$var; print ""; + print ''; print ''; print ''; print ''; print '
'.$langs->trans("ActivateFCKeditor").''.$langs->trans("ActivateFCKeditor").' '.$langs->trans("Action").'
'.img_object("",$picto[$const]).''.$langs->trans($desc).''; diff --git a/htdocs/comm/mailing/fiche.php b/htdocs/comm/mailing/fiche.php index 57b66c3ff2b..e0acbaca521 100644 --- a/htdocs/comm/mailing/fiche.php +++ b/htdocs/comm/mailing/fiche.php @@ -36,9 +36,22 @@ $user->getrights("mailing"); if (! $user->rights->mailing->lire || $user->societe_id > 0) accessforbidden(); - $message = ''; +// Tableau des substitutions possibles +$substitutionarray=array( +'__ID__' => 'IdRecord', +'__EMAIL__' => 'EMail', +'__LASTNAME__' => 'Lastname', +'__FIRSTNAME__' => 'Firstname' +); +$substitutionarrayfortest=array( +'__ID__' => 'TESTIdRecord', +'__EMAIL__' => 'TESTEMail', +'__LASTNAME__' => 'TESTLastname', +'__FIRSTNAME__' => 'TESTFirstname' +); + // Action envoi mailing pour tous if ($_GET["action"] == 'sendall') @@ -51,7 +64,7 @@ if ($_GET["action"] == 'sendall') } // Action envoi test mailing -if ($_POST["action"] == 'send') +if ($_POST["action"] == 'send' && ! $_POST["cancel"]) { $mil = new Mailing($db); $result=$mil->fetch($_POST["mailid"]); @@ -74,7 +87,11 @@ if ($_POST["action"] == 'send') if ($conf->fckeditor->enabled && $conf->global->FCKEDITOR_ENABLE_MAILING) $msgishtml=1; if (eregi('[ \t]*',$message)) $msgishtml=1; - $mailfile = new CMailFile($mil->sujet,$mil->sendto,$mil->email_from,$mil->body, + // Pratique les substitutions sur le sujet et message + $mil->sujet=make_substitutions($mil->sujet,$substitutionarrayfortest); + $mil->body=make_substitutions($mil->body,$substitutionarrayfortest); + + $mailfile = new CMailFile($mil->sujet,$mil->sendto,$mil->email_from,$mil->body, $arr_file,$arr_mime,$arr_name, '', '', 0, $msgishtml); @@ -85,7 +102,7 @@ if ($_POST["action"] == 'send') } else { - $message='
'.$langs->trans("ResultKo").'
'.$mailfile->error.'
'; + $message='
'.$langs->trans("ResultKo").'
'.$mailfile->error.' '.$result.'
'; } $_GET["action"]=''; @@ -239,10 +256,10 @@ if ($_GET["action"] == 'create') print '
'.$langs->trans("MailTopic").'
'.$langs->trans("MailMessage").'
'; print '
'.$langs->trans("CommonSubstitutions").':
'; - print '__ID__ = '.$langs->trans("IdRecord").'
'; - print '__EMAIL__ = '.$langs->trans("EMail").'
'; - print '__LASTNAME__ = '.$langs->trans("Lastname").'
'; - print '__FIRSTNAME__ = '.$langs->trans("Firstname").'
'; + foreach($substitutionarray as $key => $val) + { + print $key.' = '.$langs->trans($val).'
'; + } print '
'; // éditeur wysiwyg @@ -292,13 +309,6 @@ else print '
'; } - // Confirmation de l'approbation du mailing - if ($_GET["action"] == 'approve') - { - $html->form_confirm("fiche.php?id=".$mil->id,"Approuver le mailing","Confirmez-vous l'approbation du mailing ?","confirm_approve"); - print '
'; - } - // Confirmation de la suppression if ($_GET["action"] == 'delete') { @@ -394,7 +404,7 @@ else print '

'; } - + // Affichage formulaire de TEST if ($_GET["action"] == 'test') { print_titre($langs->trans("TestMailing")); @@ -404,6 +414,7 @@ else $formmail = new FormMail($db); $formmail->fromname = $mil->email_from; $formmail->frommail = $mil->email_from; + $formmail->withsubstit=1; $formmail->withfrom=0; $formmail->withto=$user->email?$user->email:1; $formmail->withcc=0; @@ -412,8 +423,9 @@ else $formmail->withfile=0; $formmail->withbody=0; $formmail->withbodyreadonly=1; + $formmail->withcancel=1; // Tableau des substitutions - $formmail->substit["__FACREF__"]=$fac->ref; + $formmail->substit=$substitutionarrayfortest; // Tableau des paramètres complémentaires du post $formmail->param["action"]="send"; $formmail->param["models"]="body"; diff --git a/htdocs/conf/conf.class.php b/htdocs/conf/conf.class.php index 5ab15b2145c..d4dd1228647 100644 --- a/htdocs/conf/conf.class.php +++ b/htdocs/conf/conf.class.php @@ -40,32 +40,34 @@ class Conf { /** \public */ - //! Objet des caractéristiques de connexions - var $db; - - var $externalrss; - var $commande; - var $ficheinter; - var $commercial; - var $societe; - var $expedition; - var $compta; - var $banque; - var $don; - var $caisse; - var $fournisseur; - var $adherent; - var $produit; - var $service; - var $stock; - var $boutique; - var $projet; - var $postnuke; - var $webcal; - var $mantis; - var $propal; - var $categorie; - var $oscommerce2; + //! Objet des caractéristiques de connexions + var $db; + //! Charset for HTML output + var $character_set_client; + + var $externalrss; + var $commande; + var $ficheinter; + var $commercial; + var $societe; + var $expedition; + var $compta; + var $banque; + var $don; + var $caisse; + var $fournisseur; + var $adherent; + var $produit; + var $service; + var $stock; + var $boutique; + var $projet; + var $postnuke; + var $webcal; + var $mantis; + var $propal; + var $categorie; + var $oscommerce2; /** diff --git a/htdocs/html.formmail.class.php b/htdocs/html.formmail.class.php index 68ea71e7d9b..445407791ac 100644 --- a/htdocs/html.formmail.class.php +++ b/htdocs/html.formmail.class.php @@ -26,6 +26,7 @@ */ require_once(DOL_DOCUMENT_ROOT ."/html.form.class.php"); +require_once(DOL_DOCUMENT_ROOT ."/lib/functions.inc.php"); /** \class FormMail @@ -46,6 +47,7 @@ class FormMail var $toname; var $tomail; + var $withsubstit; // Show substitution array var $withfrom; var $withto; var $withtocc; @@ -94,20 +96,6 @@ class FormMail } - /* - * \brief Effectue les substitutions des mots clés par les données en fonction du tableau $this->substit - * \param chaine chaine dans laquelle faire les substitutions - * \return string chaine avec les substitutions effectuées - */ - function make_substitutions($chaine) - { - foreach ($this->substit as $key=>$value) { - $chaine=ereg_replace($key,$value,$chaine); - } - return $chaine; - } - - /* * \brief Affiche la partie de formulaire pour saisie d'un mail en fonction des propriétés */ @@ -128,6 +116,19 @@ class FormMail } print "\n"; + // Substitution array + if ($this->withsubstit) + { + print "\n"; + } + // From if ($this->withfrom) { @@ -212,7 +213,7 @@ class FormMail // Topic if ($this->withtopic) { - $this->withtopic=$this->make_substitutions($this->withtopic); + $this->withtopic=make_substitutions($this->withtopic,$this->substit); print ""; print ""; @@ -251,7 +252,7 @@ class FormMail if ($this->param["models"]=='propal_send') { $defaultmessage="Veuillez trouver ci-joint la proposition commerciale __PROPREF__\n\nCordialement\n\n"; } if ($this->param["models"]=='order_send') { $defaultmessage="Veuillez trouver ci-joint la commande __ORDERREF__\n\nCordialement\n\n"; } - $defaultmessage=$this->make_substitutions($defaultmessage); + $defaultmessage=$this->make_substitutions($defaultmessage,$this->substit); print ""; print ""; diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index e063c214ca7..3ecbacbb600 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -3,6 +3,7 @@ Version=Version VersionExperimental=Experimental VersionDevelopment=Development VersionUnknown=Unknown +WarningModuleNotActive=Module %s must be enabled DolibarrSetup=Dolibarr setup DolibarrUser=Dolibarr user InternalUser=Internal user diff --git a/htdocs/langs/en_US/mails.lang b/htdocs/langs/en_US/mails.lang index 50c9bb16098..cceff40f1f5 100644 --- a/htdocs/langs/en_US/mails.lang +++ b/htdocs/langs/en_US/mails.lang @@ -51,6 +51,7 @@ AddRecipients=Add recipients RemoveRecipient=Remove recipient CommonSubstitutions=Common substitutions YouCanAddYourOwnPredefindedListHere=You can add your own mails selector module here. For this take a look at the file htdocs/includes/modules/mailings/README. +EMailTestSubstitutionReplacedByGenericValues=When using test mode, substitutions variables are replaced by generic values # Libelle des modules de liste de destinataires mailing MailingModuleDescContactCompanies=Unique contacts of all third parties diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index eddd73b6508..0042a793f59 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -3,6 +3,7 @@ Version=Version VersionExperimental=Expérimental VersionDevelopment=Développement VersionUnknown=Inconnue +WarningModuleNotActive=Module %s non actif DolibarrSetup=Installation de Dolibarr DolibarrUser=Utilisateur Dolibarr InternalUser=Utilisateur interne diff --git a/htdocs/langs/fr_FR/mails.lang b/htdocs/langs/fr_FR/mails.lang index 94fe1ac4d1c..ff97e9f33c4 100644 --- a/htdocs/langs/fr_FR/mails.lang +++ b/htdocs/langs/fr_FR/mails.lang @@ -51,6 +51,7 @@ AddRecipients=Ajout de destinataires RemoveRecipient=Supprime destinataire CommonSubstitutions=Substitutions communes YouCanAddYourOwnPredefindedListHere=Vous pouvez ajouter votre propre module de sélection/import de mails. Pour cela, voir le fichier htdocs/includes/modules/mailings/README. +EMailTestSubstitutionReplacedByGenericValues=En mode test, les variables de substitution sont remplacées par des valeurs génériques # Libelle des modules de liste de destinataires mailing MailingModuleDescContactCompanies=Contacts des tiers (prospects, clients, fournisseurs...) diff --git a/htdocs/lib/CMailFile.class.php b/htdocs/lib/CMailFile.class.php index 9294ff79c5e..a67230cdc91 100644 --- a/htdocs/lib/CMailFile.class.php +++ b/htdocs/lib/CMailFile.class.php @@ -216,7 +216,8 @@ class CMailFile } else { - dolibarr_syslog("CMailFile::sendfile: No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS"); + $this->error='No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS'; + dolibarr_syslog("CMailFile::sendfile: ".$this->error); } error_reporting($errorlevel); // Réactive niveau erreur origine @@ -267,7 +268,7 @@ class CMailFile if ($this->msgishtml) { - $out.= "Content-Type: text/html; charset=".$conf->charset_output.$this->eol; + $out.= "Content-Type: text/html; charset=".$conf->character_set_client.$this->eol; $out.= "Content-Transfer-Encoding: 8bit".$this->eol; } else diff --git a/htdocs/lib/functions.inc.php b/htdocs/lib/functions.inc.php index f0192b9cfd8..cee5f4bb014 100644 --- a/htdocs/lib/functions.inc.php +++ b/htdocs/lib/functions.inc.php @@ -2723,4 +2723,20 @@ function dol_microtime_float() return ((float)$usec + (float)$sec); } + +/* + * \brief Effectue les substitutions des mots clés par les données en fonction du tableau + * \param chaine Chaine dans laquelle faire les substitutions + * \param substitutionarray Tableau clé substitution => valeur a mettre + * \return string Chaine avec les substitutions effectuées + */ +function make_substitutions($chaine,$substitutionarray) +{ + foreach ($substitutionarray as $key => $value) + { + $chaine=ereg_replace($key,$value,$chaine); + } + return $chaine; +} + ?>
"; + $help=""; + foreach($this->substit as $key => $val) + { + $help.=$key.' -> '.$langs->trans($val).'
'; + } + print $form->textwithhelp($langs->trans("EMailTestSubstitutionReplacedByGenericValues"),$help); + print "
".$langs->trans("MailTopic")."
".$langs->trans("MailText")."