* 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
124 lines
4.3 KiB
Markdown
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)
|
|

|
|
|
|
## 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}>
|
|
```
|
|

|
|
|
|
## 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
|
|
|