passage dans l'array des PDFs générés à attacher au mail
This commit is contained in:
parent
147bc80a76
commit
cb96f9f1b1
8 changed files with 100 additions and 60 deletions
|
@ -59,7 +59,6 @@
|
|||
.tag-editor ::-ms-clear {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* tag style */
|
||||
.tag-editor .tag-editor-tag {
|
||||
/*padding-left: 5px; color: #46799b; background: #e0eaf1; white-space: nowrap;*/
|
||||
|
@ -72,7 +71,6 @@
|
|||
cursor: pointer;
|
||||
border-radius: 4px 0 0 4px;
|
||||
}
|
||||
|
||||
/* delete icon */
|
||||
/*.tag-editor .tag-editor-delete { background: #e0eaf1; cursor: pointer; border-radius: 0 2px 2px 0; padding-left: 3px; padding-right: 4px; }*/
|
||||
.tag-editor .tag-editor-delete {
|
||||
|
@ -101,7 +99,6 @@
|
|||
visibility: hidden;
|
||||
cursor: text;
|
||||
}
|
||||
|
||||
.tag-editor .tag-editor-tag.active {
|
||||
background: none !important;
|
||||
}
|
||||
|
@ -163,31 +160,38 @@
|
|||
.editer_pour label {
|
||||
width: 50px;
|
||||
}
|
||||
|
||||
.editer_cc {
|
||||
display: flex;
|
||||
}
|
||||
.editer_cc label {
|
||||
width: 50px;
|
||||
}
|
||||
|
||||
.editer_cci {
|
||||
display: flex;
|
||||
}
|
||||
.editer_cci label {
|
||||
width: 50px;
|
||||
}
|
||||
|
||||
.reponse_formulaire {
|
||||
padding: 1rem;
|
||||
margin-bottom: 2rem;
|
||||
font-weight: bold;
|
||||
}
|
||||
.reponse_formulaire_erreur {
|
||||
.reponse_formulaire_erreur, .editer .erreur_message {
|
||||
background-color: #f7d1d1;
|
||||
border: solid 2px #f00;
|
||||
display: block;
|
||||
}
|
||||
.reponse_formulaire_ok {
|
||||
background-color: #c4ecd6;
|
||||
border: solid 2px #080;
|
||||
}
|
||||
.remplacements_slugs {
|
||||
margin-top: 3rem;
|
||||
}
|
||||
.formulaire_gamumail .boutons {
|
||||
margin-top: 3rem;
|
||||
}
|
||||
.formulaire_gamumail .btn {
|
||||
font-size: 3rem;
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
#CACHE{0}
|
||||
|
||||
<link rel="stylesheet" href="[(#CHEMIN{css/gamumail.css}|timestamp)]" type="text/css" media="screen" charset="utf-8">
|
||||
<link rel="stylesheet" href="[(#CHEMIN{css/gamumail.css}|timestamp)]" type="text/css" media="screen" charset="utf-8" />
|
||||
|
||||
<div class="formulaire_spip formulaire_#FORM">
|
||||
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
|
||||
|
@ -91,21 +91,16 @@
|
|||
</div>
|
||||
</B_pdf>
|
||||
|
||||
#SET{id_gamumail,0}
|
||||
#SET{name,Tid_doc}
|
||||
<BOUCLE_slug(GAMUMAILS){slug}{tout}> #SET{id_gamumail,#ID_GAMUMAIL} </BOUCLE_slug>
|
||||
<B_doc>
|
||||
<h2><:gamumail:autres_fichiers_attaches:></h2>
|
||||
#SET{name,docs_spip}
|
||||
<h2><:gamumail:documents_attaches:></h2>
|
||||
<div class="editer_groupe">
|
||||
#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
|
||||
#SET{obli,"obligatoire"}
|
||||
<div class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
|
||||
<BOUCLE_doc(DOCUMENTS){id_gamumail=#GET{id_gamumail}}>
|
||||
<div class="choix">
|
||||
<input type="checkbox" class="checkbox" name="#GET{name}[]" value="#ID_DOCUMENT" id="#GET{name}_#ID_DOCUMENT" checked="checked" >
|
||||
<label for="#GET{name}_#ID_DOCUMENT">[(#TITRE|sinon{#FICHIER|basename})]</label>
|
||||
</div>
|
||||
</BOUCLE_doc>
|
||||
<div class="editer editer_[(#GET{name})][ (#GET{erreurs}|oui)erreur]">
|
||||
<div class="choix">
|
||||
[<span class="erreur_message">(#GET{erreurs})</span>]
|
||||
<label for="#GET{name}"><:gamumail:id_docs_attaches:></label>
|
||||
<input type="text" class="text" name="#GET{name}" value="[(#ENV{#GET{name}})]" id="#GET{name}" >
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</B_doc>
|
||||
|
|
|
@ -57,7 +57,7 @@ function formulaires_gamumail_charger_dist($slug, $destinataires = 0, $Tclient =
|
|||
}
|
||||
}
|
||||
|
||||
$gamuMail = sql_fetsel('sujet, texte', 'spip_gamumails', 'slug='.sql_quote($slug));
|
||||
$gamuMail = sql_fetsel('sujet, texte, id_docs', 'spip_gamumails', 'slug='.sql_quote($slug));
|
||||
$valeurs = array(
|
||||
"slug" => $slug,
|
||||
'sujet' => $gamuMail['sujet'],
|
||||
|
@ -67,7 +67,7 @@ function formulaires_gamumail_charger_dist($slug, $destinataires = 0, $Tclient =
|
|||
'cci' => lire_config('gamumail/mail_cci'),
|
||||
'TFichierpdfs' => $TFichierPdf,
|
||||
'Tpdfs_ok' => [],
|
||||
'Tid_doc' => [],
|
||||
'docs_spip' => $gamuMail['id_docs'],
|
||||
'options' => $options
|
||||
);
|
||||
|
||||
|
@ -117,6 +117,24 @@ function formulaires_gamumail_verifier_dist($slug, $destinataires = 0, $Tclient
|
|||
$erreurs['pour'] .= _T("gamumail:mails_destinataires_en_erreur", ['mails_erreur' => join(', ', $Tmails_erreur)]);
|
||||
}
|
||||
|
||||
// les id_document attachés sont-ils OK ?
|
||||
$Tid_docs = [];
|
||||
if (_request('docs_spip') != '') {
|
||||
$Tid_docs = explode(',', _request('docs_spip'));
|
||||
}
|
||||
if (count($Tid_docs)) {
|
||||
$Tid_docs_erreurs = [];
|
||||
foreach($Tid_docs as $id_doc) {
|
||||
if (intval($id_doc) != $id_doc
|
||||
OR !sql_getfetsel('id_document', 'spip_documents', 'id_document='.$id_doc)) {
|
||||
$Tid_docs_erreurs[] = $id_doc;
|
||||
}
|
||||
}
|
||||
if (count($Tid_docs_erreurs)) {
|
||||
$erreurs['docs_spip'] = _T("gamumail:id_docs_en_erreur", ['id_docs_erreurs' => join(', ', $Tid_docs_erreurs)]);
|
||||
}
|
||||
}
|
||||
|
||||
// surcharges
|
||||
if ($f = charger_fonction('verifier', 'gamumail', true)) {
|
||||
$erreurs = $f($erreurs, $options, $slug, $destinataires, $Tclient, $Tpdf, $redirect);
|
||||
|
@ -139,7 +157,7 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient =
|
|||
$cci = _request('cci');
|
||||
$sujet = _request('sujet');
|
||||
$html = propre(_request('texte'));
|
||||
$Tid_doc = _request('Tid_doc');
|
||||
$docs_spip = _request('docs_spip');
|
||||
$Tpdfs_ok = _request('Tpdfs_ok');
|
||||
$texte = facteur_mail_html2text($html);
|
||||
|
||||
|
@ -147,6 +165,8 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient =
|
|||
$cc = explode(',', $cc);
|
||||
$cci = explode(',', $cci);
|
||||
|
||||
$docs_spip = ($docs_spip != '' ? explode(',', $docs_spip) : []);
|
||||
|
||||
$Tmails = [];
|
||||
foreach ($pour as $dest) {
|
||||
if (is_numeric($dest)) {
|
||||
|
@ -169,8 +189,8 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient =
|
|||
}
|
||||
|
||||
// les documents joints
|
||||
if (!empty($Tid_doc)) {
|
||||
foreach ($Tid_doc as $id_document) {
|
||||
if (!empty($docs_spip)) {
|
||||
foreach ($docs_spip as $id_document) {
|
||||
$Tdocument = sql_fetsel('titre,fichier,extension','spip_documents','id_document='.intval($id_document));
|
||||
$destination = _DIR_IMG.$Tdocument['fichier'];
|
||||
$extension = $Tdocument['extension'];
|
||||
|
@ -260,7 +280,7 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient =
|
|||
*/
|
||||
// appel d'une éventuelle fonction de traitement du contenu spécifique du slug
|
||||
if ($f = charger_fonction($slug . '_traiter', 'gamumail', true)) {
|
||||
$corps = $f($corps, $options, $slug, $Tmails, $Tclient, $Tpdf, $redirect);
|
||||
$corps = $f($corps, $options, $slug, $Tmails);
|
||||
}
|
||||
|
||||
$envoyer_mail = charger_fonction('envoyer_mail', 'inc/');
|
||||
|
|
|
@ -72,11 +72,9 @@ function gamumail_verifier_dist($erreurs, $options, $slug, $destinataires='', $T
|
|||
/**
|
||||
* fonctions appelée en fin de gamumail_traiter_dist()
|
||||
*
|
||||
* @param array $corps[] => cf return
|
||||
* @param string $slug modele du mail a charger
|
||||
* @param string $destinataires = adresses mails et id_auteurs séparées par ,
|
||||
* @param array $Tclient [] ['objet' => 'app_client', 'id_objet' => 3, 'champ' => 'email'] ou ['objet' => 'app_client', 'id_objet' => 3, 'champ' => 'email']
|
||||
* @param array $Tpdf [] ['fichier' => 'pdf_facture', 'nom' => 'facture_123', 'contexte' => ['id_app_facture' => 3]] ou ['fichier' => 'pdf_facture', 'nom' => 'facture_123', 'contexte' => ['id_app_facture' => 3]]
|
||||
* @param string $redirect
|
||||
* @param array $options
|
||||
*
|
||||
* @return array $corps
|
||||
|
@ -84,11 +82,12 @@ function gamumail_verifier_dist($erreurs, $options, $slug, $destinataires='', $T
|
|||
* 'html' => $html,
|
||||
* 'texte' => $texte,
|
||||
* 'cc' => $cc,
|
||||
* 'cci' => $cci
|
||||
* 'cci' => $cci,
|
||||
* 'pieces_jointes' => $pieces_jointes
|
||||
* ];
|
||||
*
|
||||
**/
|
||||
function gamumail_traiter_dist($corps, $options, $slug, $destinataires='', $Tclient=[], $Tpdf=[], $redirect) {
|
||||
function gamumail_traiter_dist($corps, $options, $slug, $destinataires='') {
|
||||
|
||||
$html = $corps['html'];
|
||||
$html = str_replace('@@truc_a_remplacer@@', 'le machin qui remplace', $html);
|
||||
|
|
|
@ -3,7 +3,6 @@ if (!defined('_ECRIRE_INC_VERSION')){
|
|||
return;
|
||||
}
|
||||
|
||||
|
||||
function inc_charger_pdf_dist($fichier_pdf, $contexte = []){
|
||||
$login = lire_config('curl_login');
|
||||
$password = lire_config('curl_mdp');
|
||||
|
|
|
@ -12,6 +12,13 @@ if (!defined('_ECRIRE_INC_VERSION')){
|
|||
* @param array $options :
|
||||
* $options['debug' => true] pour afficher le $corps final sans envoyer le mail
|
||||
* $options['cci' => true] pour passer les destinataires en cci si il y en a plus qu'un
|
||||
* $options['pdfs' => [...]] array des fichiers PDF générés à attacher dont les éléments peuvent être :
|
||||
* - soit un nom de squelette PDF
|
||||
* - soit un array avec 3 éléments (seul le 1er est obligatoire):
|
||||
* [ 'fichier' => 'squelette_PDF',
|
||||
* 'contexte' => ['parametre_url_1' => 'valeur_1', 'parametre_url_2' => 'valeur_2', ...]
|
||||
* 'nom' => 'nom_fichier_attache' ]
|
||||
* $options['args' => ['param_1' => 'valeur_1, 'param_2' => 'valeur_2', ...]]
|
||||
*
|
||||
**/
|
||||
function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
|
||||
|
@ -38,7 +45,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
|
|||
return $retour;
|
||||
}
|
||||
|
||||
// destinataires
|
||||
// destinataires (id_auteur ou mails) => $pour[] est un array avec les adresses mails valides
|
||||
if (!is_array($destinataires)) {
|
||||
$destinataires = explode(',', $destinataires);
|
||||
}
|
||||
|
@ -77,7 +84,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
|
|||
$Tid_doc[] = $doc;
|
||||
}
|
||||
}
|
||||
// récup des paramètres des fichiers à attacher
|
||||
// récup des paramètres des docs à attacher
|
||||
if (!empty($Tid_doc)) {
|
||||
foreach ($Tid_doc as $id_document) {
|
||||
$Tdocument = sql_fetsel('titre,fichier,extension','spip_documents','id_document='.intval($id_document));
|
||||
|
@ -98,32 +105,43 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
|
|||
];
|
||||
}
|
||||
}
|
||||
/*
|
||||
// les pdfs
|
||||
$Tpdfs_ok = _request('Tpdfs_ok');
|
||||
if ($f = charger_fonction('traiter_av_pdf', 'gamumail', true)) {
|
||||
$options = $f($options, $auteur, $Tclient, $Tpdf);
|
||||
}
|
||||
if ($f = charger_fonction($slug . '_traiter_av_pdf', 'gamumail', true)) {
|
||||
$options = $f($options, $auteur, $Tclient, $Tpdf);
|
||||
}
|
||||
|
||||
$Tpdf_dell = [];
|
||||
if (!empty($Tpdfs_ok) and is_array($Tpdfs_ok)) {
|
||||
if (array_key_exists('fichier', $Tpdf)) {
|
||||
$Tpdf = [$Tpdf];
|
||||
// les pdfs
|
||||
if (isset($options['pdfs'])) {
|
||||
$Tpdfs = $options['pdfs'];
|
||||
if (!is_array($Tpdfs)) {
|
||||
$Tpdfs = explode(',', $Tpdfs);
|
||||
}
|
||||
$Tpdfs = array_filter($Tpdfs, function($p) {
|
||||
return $p != '';
|
||||
});
|
||||
// approximation pour passage dans les fonctions traiter_av_pdf() :
|
||||
// si plusieurs destinataires dans $pour[], on utilise le premier comme 2ème arg ($auteur)
|
||||
if ($f = charger_fonction('traiter_av_pdf', 'gamumail', true)) {
|
||||
$options = $f($options, $pour[0], [], $Tpdfs);
|
||||
}
|
||||
if ($f = charger_fonction($slug . '_traiter_av_pdf', 'gamumail', true)) {
|
||||
$options = $f($options, $pour[0], [], $Tpdfs);
|
||||
}
|
||||
|
||||
$recup_pdf = charger_fonction('charger_pdf','inc');
|
||||
foreach ($Tpdfs_ok as $pdf) {
|
||||
foreach ($Tpdf as $p) {
|
||||
if ($p['fichier'] === $pdf) {
|
||||
$c = $p['contexte'];
|
||||
$nom = $p['nom'];
|
||||
$Tpdf_dell = [];
|
||||
if (!empty($Tpdfs) and is_array($Tpdfs)) {
|
||||
foreach ($Tpdfs as $pdf) {
|
||||
if (!is_array($pdf)) {
|
||||
$sq_pdf = $pdf;
|
||||
$context = [];
|
||||
$nom = $pdf;
|
||||
}
|
||||
elseif (array_key_exists('fichier', $pdf)) {
|
||||
$sq_pdf = $pdf['fichier'];
|
||||
$context = array_key_exists('context', $pdf) ? $pdf['context'] : [];
|
||||
$nom = array_key_exists('nom', $pdf) ? $pdf['nom'] : $pdf;
|
||||
}
|
||||
else break;
|
||||
}
|
||||
|
||||
$pdf = $recup_pdf($pdf, $c);
|
||||
$recup_pdf = charger_fonction('charger_pdf','inc');
|
||||
$pdf = $recup_pdf($sq_pdf, $context);
|
||||
$nom_fichier = $nom.'.pdf';
|
||||
$destination = _DIR_TMP.basename($nom_fichier);
|
||||
$Tpdf_dell[] = $destination;
|
||||
|
@ -136,7 +154,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
|
|||
];
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
$html_header = '';
|
||||
if (find_in_path('gamumail/'.$slug .'_html_header.html')) {
|
||||
$html_header = recuperer_fond('gamumail/'.$slug . '_html_header', $options);
|
||||
|
@ -156,7 +174,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
|
|||
// pipeline pour les traitement du contenu des slugs spécifiques de chaque plugins
|
||||
$args = $options;
|
||||
$args['slug'] = $slug;
|
||||
$args['destinataires'] = $destinataires;
|
||||
$args['destinataires'] = $pour;
|
||||
$html = pipeline('remplacements_slug', array(
|
||||
'args' => $args,
|
||||
'data' => $html
|
||||
|
@ -177,7 +195,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
|
|||
*/
|
||||
// appel d'une éventuelle fonction de traitement du contenu spécifique du slug
|
||||
if ($f = charger_fonction($slug . '_traiter', 'gamumail', true)) {
|
||||
$corps = $f($corps, $options, $slug, $destinataires, $Tclient, $Tpdf, $redirect);
|
||||
$corps = $f($corps, $options, $slug, $pour);
|
||||
}
|
||||
|
||||
// si debug on affiche sans envoyer le mail
|
||||
|
|
|
@ -25,9 +25,9 @@
|
|||
<div class="bloc_choix_slug">
|
||||
<h3><:gamumail:choix_slug:></h3>
|
||||
<select id="choix_slug" name="choix_slug">
|
||||
<option value=""><:gamumail:choisissez_un_modele:></option>
|
||||
<option value=""[ (#ENV{slug}|non) selected]><:gamumail:choisissez_un_modele:></option>
|
||||
<BOUCLE_slugs(GAMUMAILS){statut=publie}{par titre}>
|
||||
<option value="#SLUG"[ (#SLUG|=={#ENV{slug}}|oui) selected="selected"]>#TITRE</option>
|
||||
<option value="#SLUG"[ (#SLUG|=={#ENV{slug}}|oui) selected]>#TITRE</option>
|
||||
</BOUCLE_slugs>
|
||||
</select>
|
||||
</div>
|
||||
|
|
|
@ -21,6 +21,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
|
|||
'choix_slug' => 'Choix du modèle',
|
||||
'contenu_mail' => 'Contenu du mail',
|
||||
|
||||
// D
|
||||
'documents_attaches' => 'Documents attachés',
|
||||
|
||||
//EE
|
||||
'envoyer' => 'Envoyer',
|
||||
"erreur_envoi_mail" => "Erreur dans l'envoi de votre mail",
|
||||
|
@ -37,6 +40,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
|
|||
'info_gamumails_auteur' => 'Les gamumails de cet auteur',
|
||||
'info_nb_gamumails' => '@nb@ gamumails',
|
||||
'id_destinataires_sans_mails' => 'Les id_auteur @ids_erreur@ n\'ont pas d\'adresse mail',
|
||||
'id_docs_attaches' => 'ID documents séparés par une virgule',
|
||||
'id_docs_en_erreur' => 'Documents en erreur : @id_docs_erreurs@',
|
||||
|
||||
//MM
|
||||
"mail_envoye" => "Votre message a bien été envoyé",
|
||||
|
|
Loading…
Add table
Reference in a new issue