gamuMail/README.md
tofulm a2f39badd6 On permet d'ajouter un header / footer on mail html envoyé :
* 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
2020-04-29 10:25:45 +02:00

124 lines
4.3 KiB
Markdown

# 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)
![interface](doc/interface.png "interface")
## 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 :
```html
<INCLURE{fond=inclure/gamumail_config,env}>
```
![configuration](doc/configuration.png "Exemple de configuration")
## 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 :
```html
<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 :
>
```php
/**
* 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 :
```php
function gamumail_SLUG_charger($valeurs, $options = []){
return $valeurs;
}
```
* pour verifier : **gamumail/SLUG_verifier.php** avec une fonction :
```php
function gamumail_SLUG_verifier($erreurs, $options = []){
return $erreurs;
}
```
* pour traiter : **gamumail/SLUG_traiter.php** avec une fonction ex:
```php
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