diff --git a/css/gamumail.css b/css/gamumail.css index 68aeaa2..eba2958 100644 --- a/css/gamumail.css +++ b/css/gamumail.css @@ -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; +} \ No newline at end of file diff --git a/formulaires/gamumail.html b/formulaires/gamumail.html index 588dd33..0785003 100644 --- a/formulaires/gamumail.html +++ b/formulaires/gamumail.html @@ -1,6 +1,6 @@ #CACHE{0} - +
[

(#ENV*{message_erreur})

] @@ -91,21 +91,16 @@
- #SET{id_gamumail,0} - #SET{name,Tid_doc} - #SET{id_gamumail,#ID_GAMUMAIL} - -

<:gamumail:autres_fichiers_attaches:>

+ #SET{name,docs_spip} +

<:gamumail:documents_attaches:>

#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} - #SET{obli,"obligatoire"} -
- -
- - -
- +
+
+ [(#GET{erreurs})] + + +
diff --git a/formulaires/gamumail.php b/formulaires/gamumail.php index 6a3f920..e0f6e9b 100644 --- a/formulaires/gamumail.php +++ b/formulaires/gamumail.php @@ -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/'); diff --git a/gamumail_fonctions.php b/gamumail_fonctions.php index fdd27bb..d0a795a 100644 --- a/gamumail_fonctions.php +++ b/gamumail_fonctions.php @@ -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); diff --git a/inc/charger_pdf.php b/inc/charger_pdf.php index 8fd1d61..64d1934 100644 --- a/inc/charger_pdf.php +++ b/inc/charger_pdf.php @@ -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'); diff --git a/inc/envoyer_gamumail.php b/inc/envoyer_gamumail.php index 7c81af6..8504eb4 100644 --- a/inc/envoyer_gamumail.php +++ b/inc/envoyer_gamumail.php @@ -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]; + 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 diff --git a/inclure/envoyer_gamumail.html b/inclure/envoyer_gamumail.html index 697e9a4..b5b89b0 100644 --- a/inclure/envoyer_gamumail.html +++ b/inclure/envoyer_gamumail.html @@ -25,9 +25,9 @@

<:gamumail:choix_slug:>

diff --git a/lang/gamumail_fr.php b/lang/gamumail_fr.php index f9a709d..2dbb70f 100644 --- a/lang/gamumail_fr.php +++ b/lang/gamumail_fr.php @@ -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é",