et enfin la doc

This commit is contained in:
Christophe 2020-04-27 12:23:23 +02:00
parent 33a89b9df0
commit a0555a08ba
4 changed files with 112 additions and 1 deletions

111
README.md
View file

@ -1,2 +1,113 @@
# 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>
```
### 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/charger_SLUG.php** avec une fonction :
```php
function gamumail_charger_SLUG($valeurs, $options = []){
return $valeurs;
}
```
* pour verifier : **gamumail/verifier_SLUG.php** avec une fonction :
```php
function gamumail_verifier_SLUG($erreurs, $options = []){
return $erreurs;
}
```
* pour traiter : **gamumail/traiter_SLUG.php** avec une fonction ex:
```php
function gamumail_traiter_contrat_resa($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;
}
```

BIN
doc/configuration.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

BIN
doc/interface.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

View file

@ -17,7 +17,7 @@
<necessite nom="bigform" compatibilite="[1.0.0;[" />
<necessite nom="crayons" compatibilite="[2.0.10;[" />
<necessite nom="facteur" compatibilite="[4.0.10;[" />
<necessite nom="facteur" compatibilite="[4.0.0;[" />
<pipeline nom="autoriser" inclure="gamumail_autorisations.php" />