* gamumail/html_header.html => header pour tous les mails * gamumail/html_footer.html => footer pour tous les mails * gamumail/SLUG_html_header.html => pour les mails du modele SLUG * gamumail/SLUG_html_footer.html => pour les mails du modele SLUG
4.3 KiB
4.3 KiB
gamuMail
P.O.C pour généraliser un formulaire d'envoi de message
Il gere nativement :
- Pour
- Cc en meta : gamumail/mail_cc
- Cci en en meta : gamumail/mail_cci
- Sujet
- Texte
- Les documents attachés au modèle (cf ci-dessous)
- une liste de pdf (il faut le plugin spipdf)
Il gere des modèles de contenu pour :
- Sujet
- Texte
- Chaque modèle à un identifiant textuel : slug qui doit etre unique. Il ne peut etre creer / modifié QUE par les webmestres
- Pour gerer ses modèles, il faut inclure dans une page :
<INCLURE{fond=inclure/gamumail_config,env}>
Personnalisation du formulaire d'envoi
Dans le html
On peut ajouter des documents via un fichier du type : gamumail/SLUG_fichier.html SLUG doit etre remplacé par le nom du slug du modèle
/!\ Le name doit etre Tid_doc
ex de fichier :
<B_doc>
<h2>Fichiers attachés au séjour</h2>
<div class="editer_groupe">
<div class="editer editer_[(Tid_doc)]">
<BOUCLE_doc(DOCUMENTS){id_article=#ENV{options/id_article}}{extension=pdf}>
<div class="choix">
<input type="checkbox" class="checkbox" name="Tid_doc[]" value="#ID_DOCUMENT" id="Tid_doc_#ID_DOCUMENT" checked="checked" >
<label for="Tid_doc_#ID_DOCUMENT"><i class="fa fa-file-pdf-o rouge"></i>[ (#TITRE|sinon{#FICHIER|basename})]</label>
</div>
</BOUCLE_doc>
</div>
</div>
</B_doc>
3 branchements possibles :
- gamumail/SLUG_debutform.html -> au début du form
- gamumail/SLUG_soustexte.html -> sous le contenu du mail, avant les pièces jointes
- gamumail/SLUG_fichier.html -> à la fin du formulaire
Dans le php
1. Appel du formualire
Args du formulaire :
/**
* formulaire générique pour envoyer des mails avec pieces attachés
*
* @param string $slug modele du mail a charger
* @param int|string $auteur id_auteur ou email du destinataire
* @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 $valeurs
*/
function formulaires_gamumail_charger_dist($slug, $auteur = 0, $Tclient = [], $Tpdf = [], $redirect = '', $options = []){
}
l'Argument $Tclient est utilisé pour récupérer des emails dans un ou X autres Objets SPIP
2. modification de chaque étape: charger / vérifier / traiter
Pour chaque étape, on peut modifier l'Array de sortie :
- charger -> $valeurs
- verifier -> $erreurs
- traiter -> $corps (array du message envoyé à facteur)
Pour cela, il faut creer une fonction du type (qui utilise les memes arg que les fonctions CVT + premier arg l'Array que l'on veut modifier):
- pour charger : gamumail/SLUG_charger.php avec une fonction :
function gamumail_SLUG_charger($valeurs, $options = []){
return $valeurs;
}
- pour verifier : gamumail/SLUG_verifier.php avec une fonction :
function gamumail_SLUG_verifier($erreurs, $options = []){
return $erreurs;
}
- pour traiter : gamumail/SLUG_traiter.php avec une fonction ex:
function gamumail_contrat_resa_traiter($corps, $options = []){
if (array_key_exists('id_article', $options)) {
$htmlAdd = '';
$texteAdd = '';
$id_article = intval($options['id_article']);
$htmlAdd = recuperer_fond('gamumail/traiter_contrat_resa', ['id_article' => $id_article]);
if (!empty($htmlAdd)) {
include_spip('classes/facteur');
$html = $corps['html'];
$html = str_replace('@@pieces_jointes@@', $htmlAdd, $html);
$texte = facteur_mail_html2text($html);
$corps['html'] = $html;
$corps['texte'] = $texte;
}
}
return $corps;
}
3. Ajouter un header / footer dans notre content html
on peut définir un header / footer pour les messages :
- gamumail/html_header.html => header pour tous les mails
- gamumail/html_footer.html => footer pour tous les mails
- gamumail/SLUG_html_header.html => pour les mails du modele SLUG
- gamumail/SLUG_html_footer.html => pour les mails du modele SLUG