Compare commits
63 commits
envoi_sepa
...
master
Author | SHA1 | Date | |
---|---|---|---|
|
8415578c22 | ||
f654cbcc62 | |||
f835af735d | |||
66ecc85ecb | |||
|
e60bb95f70 | ||
|
1f134ebe36 | ||
c8519cfabe | |||
ee44ab4bed | |||
27d04e9eee | |||
b9d687bad4 | |||
|
3caca6a1fc | ||
|
f5c6c696a2 | ||
|
9797f06364 | ||
4eede987fa | |||
d4405aa751 | |||
f2d5d05347 | |||
ff9c550c22 | |||
569de1e0d7 | |||
|
39e66784ee | ||
|
4ee007026d | ||
bdd0a8783e | |||
c6d00822d9 | |||
484e5c833f | |||
9ee0dc7e99 | |||
|
b1d7e8adaa | ||
88ff6b90d9 | |||
e360a189ee | |||
8a7a4c1a58 | |||
c7c4ebc2e4 | |||
fed21d5d28 | |||
|
69d0d3f9c5 | ||
|
d57df2412e | ||
|
13021a3df1 | ||
9672c3ee46 | |||
260dffa24e | |||
|
9b45a62720 | ||
|
3fb6c98e6e | ||
|
00b859cb02 | ||
0431d0e6f4 | |||
91b3879924 | |||
5785e07b91 | |||
dff72a5aa6 | |||
|
c557173154 | ||
|
258902d900 | ||
8882667666 | |||
a7fe6a811f | |||
4e61ca9ec1 | |||
64bfe8bc78 | |||
999663fa9f | |||
57e1466497 | |||
1f870feae8 | |||
5efa4f4fb5 | |||
0c63b86241 | |||
434e7a0cf8 | |||
08e1fac607 | |||
c70ced219c | |||
|
edccc08f83 | ||
|
cb1db1aa91 | ||
|
6f73910ed4 | ||
|
15d9526132 | ||
|
dddde4449f | ||
|
c4865b4ee2 | ||
|
df8f8051af |
18 changed files with 717 additions and 256 deletions
201
README.md
201
README.md
|
@ -1,30 +1,41 @@
|
|||
# gamuMail
|
||||
|
||||
> formulaire d'envoi de messages configurables
|
||||
|
||||
## 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)
|
||||
|
||||
- Pour
|
||||
- Cc en meta : **gamumail/mail_cc**
|
||||
- Cci en en meta : **gamumail/mail_cci**
|
||||
- Cci en globals []: `$GLOBALS['gamuza_mail_cci'] = ['sarl.gamuza@gmail.com'];`
|
||||
- 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
|
||||
* ID documents joints (spip_documents)
|
||||
|
||||
- Sujet
|
||||
- Texte
|
||||
- ID documents joints (spip_documents)
|
||||
|
||||
---
|
||||
* Chaque modèle à un identifiant textuel : **slug** qui doit etre unique. Il ne peut etre créé / modifié QUE par les webmestres
|
||||
* Pour gerer ses modèles, il faut se rendre sur la page : `?page=configuration_mails`
|
||||
|
||||
- Chaque modèle à un identifiant textuel : **slug** qui doit etre unique. Il ne peut etre créé / modifié QUE par les webmestres
|
||||
- Pour gerer ses modèles, il faut se rendre sur la page : `?page=configuration_mails`
|
||||

|
||||
|
||||
## 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 :
|
||||
> ex de fichier :
|
||||
|
||||
```html
|
||||
<B_doc>
|
||||
<h2>Fichiers attachés au séjour</h2>
|
||||
|
@ -43,24 +54,28 @@ ex de fichier :
|
|||
</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_fichiers.html -> à la fin du formulaire
|
||||
|
||||
- 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_fichiers.html -> à la fin du formulaire
|
||||
|
||||
### aide à la rédaction du contenu:
|
||||
|
||||
- le fichier **gamumail/remplacement_slugs.html** s'affiche en bas de la page de configuration des modèles **inclure/gamumail_config.html**
|
||||
et du formulaire d'envoi **formulaires/gamumail.html** : il permet de lister les remplacements effectués pour **tous les modèles** qui sont :
|
||||
- les génériques fournis par Gamumail par la fonction `inc_gamumail_remplacements_dist()` du fichier `inc/gamumail_remplacements.php`
|
||||
- ceux fournis par les plugins via le pipeline **remplacement_slugs** (cf ci-dessous)
|
||||
et du formulaire d'envoi **formulaires/gamumail.html** : il permet de lister les remplacements effectués pour **tous les modèles** qui sont : - les génériques fournis par Gamumail par la fonction `inc_gamumail_remplacements_dist()` du fichier `inc/gamumail_remplacements.php` - ceux fournis par les plugins via le pipeline **remplacement_slugs** (cf ci-dessous)
|
||||
- pour documenter les remplacements (pied de la page gamumail_config.html), chaque plugin doit renseigner ses remplacements dans l'array global `$GLOBALS['remplacements_gamumail']`
|
||||
Exemple dans un fichier `prefixe_fonctions.php` :
|
||||
|
||||
```php
|
||||
$GLOBALS['remplacements_gamumail']['@@num_facture@@'] = 'numéro de la facture';
|
||||
```
|
||||
|
||||
- une page de test des slugs est fournie à l'URL **...?page=test_slug&slug=mail_libre&dest=27**
|
||||
|
||||
### exemple de page d'envoi de mail en choisissant un slug parmi ceux existant :
|
||||
|
||||
```html
|
||||
[(#AUTORISER{modifier,souscripteur,#ENV{id_auteur}}|sinon_interdire_acces)]
|
||||
|
||||
|
@ -76,9 +91,11 @@ $GLOBALS['remplacements_gamumail']['@@num_facture@@'] = 'numéro de la facture';
|
|||
```
|
||||
|
||||
### Dans le php
|
||||
|
||||
#### 1. Appel du formulaire
|
||||
|
||||
> Args du formulaire :
|
||||
>
|
||||
|
||||
```php
|
||||
/**
|
||||
* formulaire générique pour envoyer des mails avec pieces attachés
|
||||
|
@ -99,100 +116,93 @@ $GLOBALS['remplacements_gamumail']['@@num_facture@@'] = 'numéro de la facture';
|
|||
function formulaires_gamumail_charger_dist($slug, $auteur = 0, $Tclient = [], $Tpdf = [], $redirect = '', $options = []){
|
||||
}
|
||||
```
|
||||
|
||||
#### argument $slug "no_gamumail"
|
||||
|
||||
Si $slug à pour valeur **no_gamumail** alors l'envoi est annulé
|
||||
Exemple d'option à insérer dans un select sélecteur de slug :
|
||||
|
||||
```html
|
||||
<option value="no_gamumail"[ (#ENV{slug}|=={no_gamumail}|oui) selected="selected"]><:souscriptions:pas_de_mail_auto:></option>
|
||||
<option
|
||||
value="no_gamumail"
|
||||
[
|
||||
(#ENV{slug}|=""
|
||||
="{no_gamumail}|oui)"
|
||||
selected="selected"
|
||||
]
|
||||
>
|
||||
<:souscriptions:pas_de_mail_auto:>
|
||||
</option>
|
||||
```
|
||||
|
||||
#### argument Tclient
|
||||
|
||||
l'Argument $Tclient est utilisé pour récupérer des emails dans un ou X autres Objets SPIP
|
||||
|
||||
#### argument Tpdf : attacher des PDF avec contenu dynamique
|
||||
|
||||
- exemple d'appel pour 1 fichier PDF avec son contexte :
|
||||
|
||||
```html
|
||||
[(#FORMULAIRE_GAMUMAIL{
|
||||
#ENV{slug},
|
||||
#ENV{email},
|
||||
'',
|
||||
#ARRAY{
|
||||
fichier,pdf_guide,
|
||||
nom,Fiche_guide,
|
||||
contexte,#ARRAY{
|
||||
id_article,#ENV{id_article},
|
||||
type_guide,#ENV{type_guide,guide}
|
||||
}
|
||||
},
|
||||
#ENV{redirect},
|
||||
#ARRAY{
|
||||
id_auteur,#ENV{id_auteur}
|
||||
}
|
||||
})]
|
||||
[(#FORMULAIRE_GAMUMAIL{ #ENV{slug}, #ENV{email}, '', #ARRAY{ fichier,pdf_guide,
|
||||
nom,Fiche_guide, contexte,#ARRAY{ id_article,#ENV{id_article},
|
||||
type_guide,#ENV{type_guide,guide} } }, #ENV{redirect}, #ARRAY{
|
||||
id_auteur,#ENV{id_auteur} } })]
|
||||
```
|
||||
|
||||
le fichier PDF sera généré par SPIPDF avec l'URL suivante : `...spip.php?page=spipdf&spipdf=pdf_guide&id_article=1838&type_guide=guide`
|
||||
|
||||
- exemple d'appel pour 2 fichiers PDF générés par le même squelette (pdf_guide.html) mais avec chacun leur contexte :
|
||||
|
||||
```html
|
||||
[(#FORMULAIRE_GAMUMAIL{
|
||||
#ENV{slug},
|
||||
#ENV{email},
|
||||
'',
|
||||
#ARRAY{
|
||||
0,#ARRAY{
|
||||
fichier,pdf_guide,
|
||||
nom,Fiche_guide,
|
||||
contexte,#ARRAY{
|
||||
id_article,#ENV{id_article},
|
||||
type_guide,guide,
|
||||
}
|
||||
},
|
||||
1,#ARRAY{
|
||||
fichier,pdf_guide,
|
||||
nom,Fiche_guide_renfort,
|
||||
contexte,#ARRAY{
|
||||
id_article,#ENV{id_article},
|
||||
type_guide,guide_renfort,
|
||||
}
|
||||
}
|
||||
},
|
||||
#ENV{redirect},
|
||||
#ARRAY{
|
||||
id_auteur,#ENV{id_auteur}
|
||||
}
|
||||
})]
|
||||
[(#FORMULAIRE_GAMUMAIL{ #ENV{slug}, #ENV{email}, '', #ARRAY{ 0,#ARRAY{
|
||||
fichier,pdf_guide, nom,Fiche_guide, contexte,#ARRAY{
|
||||
id_article,#ENV{id_article}, type_guide,guide, } }, 1,#ARRAY{ fichier,pdf_guide,
|
||||
nom,Fiche_guide_renfort, contexte,#ARRAY{ id_article,#ENV{id_article},
|
||||
type_guide,guide_renfort, } } }, #ENV{redirect}, #ARRAY{
|
||||
id_auteur,#ENV{id_auteur} } })]
|
||||
```
|
||||
|
||||
/!\ en cas de plusieurs PDF :
|
||||
- il faut une *clé unique* pour chaque #ARRAY (0, 1, 2... est une bonne solution)
|
||||
|
||||
- il faut une _clé unique_ pour chaque #ARRAY (0, 1, 2... est une bonne solution)
|
||||
- dans l'#ARRAY contexte il faut que le dernier élément soit suivi d'une virgule ou d'une accolade fermante
|
||||
|
||||
#### 2. surcharges 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)
|
||||
|
||||
- charger -> $valeurs
|
||||
- verifier -> $erreurs
|
||||
- traiter -> $corps (array du message envoyé à facteur)
|
||||
|
||||
Voir **gamumail_fonctions.php** pour les arguments des fonctions de surcharge + exemples
|
||||
|
||||
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)
|
||||
La surcharge pour tous les slugs (`gamumail_tous_...`) précède celle spécifique par slug : on peut donc utiliser les 2 successivement.
|
||||
Syntaxe :
|
||||
* pour charger pour tous les slugs : **gamumail/tous_charger.php** (fonction `gamumail_tous_charger()`)
|
||||
* pour charger spécifique d'un slug : **gamumail/NOM_SLUG_charger.php** avec une fonction :
|
||||
|
||||
- pour charger pour tous les slugs : **gamumail/tous_charger.php** (fonction `gamumail_tous_charger()`)
|
||||
- pour charger spécifique d'un slug : **gamumail/NOM_SLUG_charger.php** avec une fonction :
|
||||
|
||||
```php
|
||||
function gamumail_NOM_SLUG_charger($valeurs, $options = []){
|
||||
return $valeurs;
|
||||
}
|
||||
```
|
||||
* pour verifier pour tous les slugs : **gamumail/tous_verifier.php** (fonction `gamumail_tous_verifier()`)
|
||||
* pour verifier spécifique d'un slug : **gamumail/NOM_SLUG_verifier.php** avec une fonction :
|
||||
|
||||
- pour verifier pour tous les slugs : **gamumail/tous_verifier.php** (fonction `gamumail_tous_verifier()`)
|
||||
- pour verifier spécifique d'un slug : **gamumail/NOM_SLUG_verifier.php** avec une fonction :
|
||||
|
||||
```php
|
||||
function gamumail_NOM_SLUG_verifier($erreurs, $options = []){
|
||||
return $erreurs;
|
||||
}
|
||||
```
|
||||
* pour traiter pour tous les slugs : **gamumail/tous_traiter.php** (fonction `gamumail_tous_traiter()`)
|
||||
* pour traiter spécifique d'un slug : **gamumail/NOM_SLUG_traiter.php** avec une fonction par ex:
|
||||
|
||||
- pour traiter pour tous les slugs : **gamumail/tous_traiter.php** (fonction `gamumail_tous_traiter()`)
|
||||
- pour traiter spécifique d'un slug : **gamumail/NOM_SLUG_traiter.php** avec une fonction par ex:
|
||||
|
||||
```php
|
||||
function gamumail_NOM_SLUG_traiter($corps, $options = []){
|
||||
if (array_key_exists('id_article', $options)) {
|
||||
|
@ -214,8 +224,11 @@ function gamumail_NOM_SLUG_traiter($corps, $options = []){
|
|||
return $corps;
|
||||
}
|
||||
```
|
||||
|
||||
#### 3. Pipeline remplacements_slug pour le traitement du contenu des messages
|
||||
|
||||
Pour les remplacements des @@ et tout autre traitement du texte des mails on utilisera le pipeline **remplacements_slug** qui utilise les arguments suivants :
|
||||
|
||||
```php
|
||||
* @param array $flux données du pipeline :
|
||||
* $flux['data'] = $html
|
||||
|
@ -250,17 +263,22 @@ Pour les remplacements des @@ et tout autre traitement du texte des mails on uti
|
|||
}
|
||||
|
||||
```
|
||||
|
||||
#### 4. Pipeline post_gamumail_ok
|
||||
|
||||
Ce pipeline est appelé si le retour de l'envoi du gamumail est OK. Il permet, par exemple, à Paybyurl d'aller modifier le champ date_paybyurl_envoye pour que la date d'envoi soit mise à jour.
|
||||
|
||||
#### 5. Ajouter un header / footer dans le 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
|
||||
|
||||
- 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
|
||||
|
||||
#### 6. Utiliser l'inclure `<INCLURE{fond=inclure/fermer_modale,env}>` pour fermeture de la modale de gamumail
|
||||
|
||||
- cet inclure est appelé au début de `formulaire/gamumail.html` : par défaut il est vide
|
||||
- un plugin peut arriver avec son fichier pour le surcharger afin de pouvoir intégrer du JS en fonction du message de retour `message_ok` du traiter de gamumail.php
|
||||
- dans `gamumail.php`, la fonction `gamumail_traiter` ajoute en fin du message de retour OK `message_ok` le suffixe `@@gamumail_ok`
|
||||
|
@ -269,8 +287,11 @@ mais aussi de faire la mise à jour de l'affichage d'un bloc ajax dans la page a
|
|||
=> voir le code en commentaire dans le fichier `inclure/fermer_modale`
|
||||
|
||||
## API d'envoi de mails utilisant les slugs
|
||||
|
||||
### fonction envoyer_gamumail()
|
||||
|
||||
- exemple d'appel :
|
||||
|
||||
```php
|
||||
$fonction = charger_fonction('envoyer_gamumail','inc');
|
||||
$options = [
|
||||
|
@ -286,7 +307,9 @@ $options = [
|
|||
];
|
||||
$fonction(lire_config('souscriptions/slug_souscription_validation'), $Tdest, $options);
|
||||
```
|
||||
|
||||
- arguments :
|
||||
|
||||
```php
|
||||
* @param string $slug
|
||||
* @param string|array $destinataires = adresses mails et id_auteur séparées par , ou en array
|
||||
|
@ -303,13 +326,27 @@ $fonction(lire_config('souscriptions/slug_souscription_validation'), $Tdest, $op
|
|||
* 'nom' => 'nom_fichier_attache' ]
|
||||
```
|
||||
|
||||
## Slugs et @@ fournis pour surcharges facultatives de SPIP pour permettre l'envoi des mails en Gamumail plutôt que via notification
|
||||
### slug `valider_inscription` :
|
||||
- message pour la validation de l'adresse mail lors de la création d'un compte avec le form `inscription`
|
||||
- à activer via une surcharge de `action_inscrire_auteur_dist()` : cf plugin **sq_collecte/sq_collecte_fonctions.php**
|
||||
- pour intégrer la définition du mot de passe dès l'inscription (sans le plugin inscription_motdepasse) + d'autres contrôles de l'inscription :
|
||||
- pour la saisie surcharge du HTML du form d'inscription : cf plugin **sq_collecte/formulaires/inscription.html**
|
||||
- pour les contrôles il faut surcharger `formulaires_inscription_verifier_dist()` : cf plugin **sq_collecte/sq_collecte_fonctions.php**
|
||||
|
||||
### slug `pass_oubli`
|
||||
- message pour le reset du mot de passe
|
||||
- à activer via une surcharge de `formulaires_oubli_traiter_dist()`: cf plugin **rocb/rocb_options.php**
|
||||
|
||||
|
||||
## Outrepasser l'erreur de certificat auto-signé lors de devs en https local
|
||||
=> dans le mes_options.php du site mettre :
|
||||
```
|
||||
```php
|
||||
define('_DEBUG_AUTORISER', true);
|
||||
```
|
||||
ce qui permet d'activer les options de curl pour ne pas vérifier le certificat dans *charger_pdf.php* :
|
||||
```
|
||||
|
||||
ce qui permet d'activer les options de curl pour ne pas vérifier le certificat dans _charger_pdf.php_ :
|
||||
```php
|
||||
// pour une connexion https locale avec certificat auto-signé
|
||||
if (defined('_DEBUG_AUTORISER')) {
|
||||
curl_setopt($CurlConnect, CURLOPT_SSL_VERIFYHOST, false);
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
<?php
|
||||
if (!defined('_ECRIRE_INC_VERSION')) return;
|
||||
|
||||
defined('_GAMUMAIL_PREFIX_SLUG') || define('_GAMUMAIL_PREFIX_SLUG', "slug");
|
||||
|
||||
/**
|
||||
* créer un slug Gamumail
|
||||
*
|
||||
|
@ -30,7 +32,8 @@ function action_creer_slug_dist($slug = null, $opt = [], $ecraser = false){
|
|||
];
|
||||
|
||||
if ($id_slug = objet_inserer('gamumail', null, $set)) {
|
||||
$set = ['slug' => 'slug_'.$id_slug];
|
||||
$slug = getSlugGamumail($id_slug);
|
||||
$set = ['slug' => $slug];
|
||||
sql_updateq('spip_gamumails', $set, 'id_gamumail = '.$id_slug);
|
||||
}
|
||||
} else {
|
||||
|
@ -57,3 +60,16 @@ function action_creer_slug_dist($slug = null, $opt = [], $ecraser = false){
|
|||
include_spip('inc/invalideur');
|
||||
suivre_invalideur("id='id_gamumail/1'");
|
||||
}
|
||||
|
||||
function getSlugGamumail(int $id_gamumail, int|null $suffix = 0):string {
|
||||
$slug = _GAMUMAIL_PREFIX_SLUG .'_'.$id_gamumail;
|
||||
if ($suffix) {
|
||||
$slug .= '_'.$suffix;
|
||||
}
|
||||
if (sql_countsel('spip_gamumails', ['slug='.sql_quote($slug)])) {
|
||||
$suffix++;
|
||||
return getSlugGamumail($id_gamumail, $suffix);
|
||||
}
|
||||
return $slug;
|
||||
}
|
||||
|
||||
|
|
|
@ -2,5 +2,8 @@
|
|||
[(#AUTORISER{configurer,gamumail}|sinon_interdire_acces)]
|
||||
|
||||
<div class="inner">
|
||||
<div class="mt-3 mb-7">
|
||||
<h1 class="mb-3">Configuration de Gamumail</h1>
|
||||
<INCLURE{fond=inclure/gamumail_config,env}>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -6,6 +6,6 @@
|
|||
#ENV{dest} = string|array destinataire(s)
|
||||
|
||||
@return : le résultat de la fonction envoyer_gamumail() en mode debug
|
||||
|
||||
]
|
||||
[(#ENV{slug}|tester_slug{#ENV{dest}})]
|
||||
|
||||
[(#ENV{slug}|tester_slug{#ENV{dest}, #ARRAY{id_dossier,#ENV{id_dossier}}})]
|
||||
|
|
|
@ -242,3 +242,31 @@
|
|||
.formulaire_gamumail .btn {
|
||||
font-size: 3rem;
|
||||
}
|
||||
|
||||
.gestion_documents {
|
||||
display:flex;
|
||||
flex-direction:column;
|
||||
gap: 20px;
|
||||
}
|
||||
.gestion_documents .colonne_droite {
|
||||
border-bottom: 1px solid #CECECE;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.colonne_droite .dropfile{
|
||||
display: flex;
|
||||
gap: 5px;
|
||||
align-items: center;
|
||||
}
|
||||
@media (min-width: 780px) {
|
||||
.gestion_documents {
|
||||
flex-direction: row;
|
||||
}
|
||||
.colonne_gauche {
|
||||
width: 50%;
|
||||
}
|
||||
.colonne_droite {
|
||||
width: 50%;
|
||||
order: 2;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -4,9 +4,13 @@
|
|||
|
||||
[(#REM)
|
||||
inclure vide pour surcharge si besoin de passer du JS en fonction du retour du traiter du form
|
||||
(voir dans le fichier fermer_modale.html pour exemple permettant de fermer une modalbox contenant ce formulaire + README)
|
||||
(voir inclure/fermer_modale.html pour exemple permettant de fermer une modalbox contenant ce formulaire + README)
|
||||
|
||||
]<INCLURE{fond=inclure/fermer_modale,env}>
|
||||
[(#REM)
|
||||
récupérer la langue du destinataire dans le paramètre options/lang
|
||||
|
||||
] #SET{lang_dest, #ENV{options/lang}|sinon{#CONFIG{langue_site}}}
|
||||
|
||||
<div class="formulaire_spip formulaire_#FORM">
|
||||
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
|
||||
|
@ -17,7 +21,7 @@
|
|||
|
||||
#SET{fichier,#SLUG|concat{_debutform}}
|
||||
[(#CHEMIN{gamumail/#GET{fichier}.html}|oui)
|
||||
<INCLURE{fond=gamumail/#GET{fichier},env}>
|
||||
<INCLURE{fond=gamumail/#GET{fichier},env,lang=#GET{lang_dest}}>
|
||||
]
|
||||
<div class="editer_groupe">
|
||||
#SET{name,pour}
|
||||
|
@ -41,7 +45,7 @@
|
|||
<label for="#GET{name}_non">Non</label>
|
||||
</div>
|
||||
<div class="choix">
|
||||
<input type="radio" class="radio" name="#GET{name}" value="oui" id="#GET{name}_oui"[ (#ENV{#GET{name}}|=={oui}|?{checked="checked"})] >
|
||||
<input type="radio" class="radio" name="#GET{name}" value="oui" id="#GET{name}_oui"[ (#ENV{#GET{name}}|oui|?{checked="checked"})] >
|
||||
<label for="#GET{name}_oui">Oui</label>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -89,7 +93,7 @@
|
|||
#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
|
||||
#SET{obli,"obligatoire"}
|
||||
<div class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
|
||||
<label for="#GET{name}">Sujet</label>
|
||||
<label for="#GET{name}"><:gamumail:sujet:></label>
|
||||
[<span class="erreur_message">(#GET{erreurs})</span>]
|
||||
<input required type="text" class="text sujet" name="#GET{name}" id="#GET{name}" value="#ENV{#GET{name}}" >
|
||||
</div>
|
||||
|
@ -100,41 +104,28 @@
|
|||
#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
|
||||
#SET{obli,"obligatoire"}
|
||||
<div class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
|
||||
<label for="#GET{name}">Texte</label>
|
||||
<label for="#GET{name}"><:gamumail:corps_message:></label>
|
||||
[<span class="erreur_message">(#GET{erreurs})</span>]
|
||||
<textarea required class="textarea texte" name="#GET{name}" id="#GET{name}" rows="7">[(#ENV{#GET{name}})]</textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="gestion_documents">
|
||||
<div class="colonne_droite">
|
||||
<h2><:gamumail:fichiers_televerser:></h2>
|
||||
<INCLURE{fond=inclure/bigform,env,accept=#LISTE{image/*, application/pdf},suffix_liste_fichiers=gamumail}>
|
||||
</div>
|
||||
<div class="colonne_gauche">
|
||||
#SET{fichier,#SLUG|concat{_soustexte}}
|
||||
[(#CHEMIN{gamumail/#GET{fichier}.html}|oui)
|
||||
<INCLURE{fond=gamumail/#GET{fichier},env}>
|
||||
<INCLURE{fond=gamumail/#GET{fichier},env,lang=#GET{lang_dest}}>
|
||||
]
|
||||
|
||||
#SET{name,Tpdfs_ok}
|
||||
<B_pdf>
|
||||
<h2><:gamumail:pdf_envoyes:></h2>
|
||||
<div class="editer_groupe">
|
||||
#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
|
||||
#SET{obli,"obligatoire"}
|
||||
<div class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
|
||||
<BOUCLE_pdf(DATA){source tableau, #ENV{TFichierpdfs}}>
|
||||
<div class="choix">
|
||||
<input type="checkbox" class="checkbox" name="#GET{name}[]" value="[(#VALEUR|table_valeur{fichier})]_#CLE" id="#GET{name}_#COMPTEUR_BOUCLE" checked="checked" >
|
||||
[(#SET{url_pdf,[(#URL_PAGE{spipdf}|parametre_url{spipdf,[(#VALEUR|table_valeur{fichier})]})]})]
|
||||
<BOUCLE_options(DATA){source tableau, #VALEUR|table_valeur{contexte}}>
|
||||
[(#SET{url_pdf,[(#GET{url_pdf}|parametre_url{#CLE,#VALEUR})]})]
|
||||
</BOUCLE_options>
|
||||
<label for="#GET{name}_#COMPTEUR_BOUCLE">[(#VALEUR|table_valeur{nom})] : <a href="#GET{url_pdf}">voir le PDF</a></label>
|
||||
</div>
|
||||
</BOUCLE_pdf>
|
||||
</div>
|
||||
</div>
|
||||
</B_pdf>
|
||||
<INCLURE{fond=gamumail/inc-pdf_envoyes,env}>
|
||||
|
||||
#SET{name,docs_spip}
|
||||
<div class="documents_attaches">
|
||||
<h2><:gamumail:documents_attaches:></h2>
|
||||
<div class="editer_groupe">
|
||||
<div class="w500p">
|
||||
#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
|
||||
<div class="editer editer_[(#GET{name})][ (#GET{erreurs}|oui)erreur]">
|
||||
<div class="choix">
|
||||
|
@ -145,7 +136,7 @@
|
|||
<B_docs_spip>
|
||||
<div class="details_docs_spip">
|
||||
<ul>
|
||||
<BOUCLE_docs_spip(DOCUMENTS){id_document IN #ENV{#GET{name}}|explode{','}}>
|
||||
<BOUCLE_docs_spip(DOCUMENTS){tous}{id_document IN #ENV{#GET{name}}|explode{','}}>
|
||||
<li><strong>#ID_DOCUMENT :</strong> #TITRE ([<a class="mediabox" href="#URL_DOCUMENT">(#FICHIER|basename)</a>])</li>
|
||||
</BOUCLE_docs_spip>
|
||||
</ul>
|
||||
|
@ -153,8 +144,7 @@
|
|||
</B_docs_spip>
|
||||
</div>
|
||||
</div>
|
||||
</B_doc>
|
||||
|
||||
</div>
|
||||
#SET{fichier,all_fichiers}
|
||||
[(#CHEMIN{gamumail/#GET{fichier}.html}|oui)
|
||||
#SET{erreurs,#ENV**{erreurs}|table_valeur{Tid_doc}}
|
||||
|
@ -169,8 +159,12 @@
|
|||
<h2><:gamumail:fichiers_annexes:></h2>
|
||||
<INCLURE{fond=gamumail/#GET{fichier},env,options=#ENV{options}}>
|
||||
]
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="boutons">
|
||||
|
||||
<hr>
|
||||
<div class="boutons text-center">
|
||||
<button type="submit" class="btn"><:gamumail:envoyer:></button>
|
||||
</div>
|
||||
</div></form>
|
||||
|
|
|
@ -13,7 +13,8 @@ include_spip('inc/filtres');
|
|||
* de la forme []['objet' => 'app_client', 'id_objet' => 3, 'champ' => 'email', 'copie' => 'cc|cci'] ou ['objet' => 'app_client', 'id_objet' => 3, 'champ' => 'email']
|
||||
* le paramètre 'copie' est facultatif : cc ou cci pour mettre un destinataire en copie, '' par défaut = destinataire principal
|
||||
* @param array $Tpdf = un ou plusieurs fichiers PDF générés par spiPDF (le contexte permet la personnalisation du contenu)
|
||||
* []['fichier' => 'pdf_facture', 'nom' => 'facture_123', 'contexte' => ['id_app_facture' => 3]] ou ['fichier' => 'pdf_facture', 'nom' => 'facture_123', 'contexte' => ['id_app_facture' => 3]]
|
||||
* []['fichier' => 'pdf_facture', 'nom' => 'facture_123', 'contexte' => ['id_app_facture' => 3, 'lang' => 'en']] ou ['fichier' => 'pdf_facture', 'nom' => 'facture_123', 'contexte' => ['id_app_facture' => 3, 'lang' => 'en']]
|
||||
* NB: si besoin que le PDF généré soit dans une langue précise, il faut passer la passer en paramètre "lang" dans le contexte
|
||||
* @param string $redirect
|
||||
* @param array $options = un gros fourre-tout sous forme d'un array
|
||||
* utilisé en particulier par les inclure HTML de gamumail/#SLUG_soustexte et gamumail/#SLUG_fichiers
|
||||
|
@ -26,6 +27,7 @@ function formulaires_gamumail_charger_dist($slug, $destinataires = 0, $Tclient =
|
|||
|
||||
$Tcc = lire_config('gamumail/mail_cc') !== '' ? explode(',', lire_config('gamumail/mail_cc', '')) : [];
|
||||
$Tcci = lire_config('gamumail/mail_cci') !== '' ? explode(',', lire_config('gamumail/mail_cci', '')) : [];
|
||||
|
||||
$Trepondre_a = lire_config('gamumail/mail_repondre_a') !== '' ? explode(',', lire_config('gamumail/mail_repondre_a', '')) : [];
|
||||
|
||||
if (!empty($destinataires) and !is_array($destinataires)) {
|
||||
|
@ -74,11 +76,31 @@ function formulaires_gamumail_charger_dist($slug, $destinataires = 0, $Tclient =
|
|||
}
|
||||
}
|
||||
|
||||
$TFichierPdf = pipeline('gamumail_filtrer_tPDF', [
|
||||
'args' => [
|
||||
'TFichierPdf' => $TFichierPdf
|
||||
],
|
||||
'data' => $TFichierPdf
|
||||
]
|
||||
);
|
||||
|
||||
$gamuMail = [];
|
||||
if (!empty($slug)) {
|
||||
$gamuMail = sql_fetsel('sujet, texte, id_docs', 'spip_gamumails', 'slug='.sql_quote($slug));
|
||||
}
|
||||
|
||||
$texte = $gamuMail['texte'] ?? '';
|
||||
$sujet = $gamuMail['sujet'] ?? '';
|
||||
// faire les remplacement <multi> selon la langue du destinataire (passée en $options[lang])
|
||||
if (!empty($options['lang']) && in_array($options['lang'], liste_options_langues('var_lang'))) {
|
||||
$texte = extraire_multi($texte, $options['lang']);
|
||||
$sujet = extraire_multi($sujet, $options['lang']);
|
||||
}
|
||||
|
||||
$valeurs = array(
|
||||
"slug" => $slug,
|
||||
'sujet' => $gamuMail['sujet'] ?? '',
|
||||
'texte' => $gamuMail['texte'] ?? '',
|
||||
'sujet' => $sujet,
|
||||
'texte' => $texte,
|
||||
'pour' => implode(',', $Tmails),
|
||||
'cc' => implode(',', $Tcc),
|
||||
'cci' => implode(',', $Tcci),
|
||||
|
@ -99,6 +121,10 @@ function formulaires_gamumail_charger_dist($slug, $destinataires = 0, $Tclient =
|
|||
$valeurs = $f($valeurs, $options, $slug, $destinataires, $Tclient, $Tpdf, $redirect);
|
||||
}
|
||||
|
||||
$rep = session_get('id_auteur') . '_' . session_get('login');
|
||||
supprimer_repertoire(_DIR_TMP . 'bigupload/final/'.$rep);
|
||||
$valeurs['_bigup_rechercher_fichiers'] = true;
|
||||
|
||||
return $valeurs;
|
||||
}
|
||||
|
||||
|
@ -184,6 +210,21 @@ function formulaires_gamumail_verifier_dist($slug, $destinataires = 0, $Tclient
|
|||
$erreurs = $f($erreurs, $options, $slug, $destinataires, $Tclient, $Tpdf, $redirect);
|
||||
}
|
||||
|
||||
/*
|
||||
* Verification des fichiers téléversés
|
||||
*/
|
||||
defined('_IMG_MAX_WIDTH') || define('_IMG_MAX_WIDTH', 2048);
|
||||
$options = [
|
||||
'mime' => 'tout_mime',
|
||||
'dimension_max' => [
|
||||
'largeur' => 10000,
|
||||
'hauteur' => 10000,
|
||||
]
|
||||
];
|
||||
|
||||
$bigform = charger_fonction('bigform_verifier','inc');
|
||||
$bigform($options,$erreurs);
|
||||
|
||||
return $erreurs;
|
||||
}
|
||||
|
||||
|
@ -220,12 +261,22 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient =
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* on recupère d'éventuels fichiers téléversés
|
||||
*/
|
||||
include_spip('inc/joindre_document');
|
||||
set_request('joindre_upload','ok');
|
||||
$Tfiles = joindre_trouver_fichier_envoye();
|
||||
if (!is_array($Tfiles)) {
|
||||
$Tfiles = [];
|
||||
}
|
||||
|
||||
if (empty($envoi_separe)) {
|
||||
gamuSend($slug, $options, $destinataires, $Tclient, $Tpdf, $redirect, $retour);
|
||||
gamuSend($slug, $options, $destinataires, $Tclient, $Tpdf, $Tfiles, $redirect, $retour);
|
||||
} else {
|
||||
$ok = true;
|
||||
foreach ($destinataires as $d) {
|
||||
$r = gamuSend($slug, $options, [$d], $Tclient, $Tpdf, $redirect);
|
||||
$r = gamuSend($slug, $options, [$d], $Tclient, $Tpdf, $Tfiles, $redirect);
|
||||
if (!$r) {
|
||||
$ok = false;
|
||||
}
|
||||
|
@ -250,14 +301,16 @@ function formulaires_gamumail_traiter_dist($slug, $destinataires = 0, $Tclient =
|
|||
}
|
||||
|
||||
|
||||
function gamuSend($slug, $options, $destinataires, $Tclient, $Tpdf, $redirect, &$retour = []) {
|
||||
function gamuSend($slug, $options, $destinataires, $Tclient, $Tpdf, $Tfiles, $redirect, &$retour = []) {
|
||||
|
||||
$cc = _request('cc');
|
||||
$cci = _request('cci');
|
||||
$repondre_a = _request('repondre_a');
|
||||
$cc = _request('cc') ?? '';
|
||||
$cci = _request('cci') ?? '';
|
||||
$repondre_a = _request('repondre_a') ?? '';
|
||||
|
||||
$cc = explode(',', $cc);
|
||||
$cci = explode(',', $cci);
|
||||
$Tcci_gamuza = $GLOBALS['gamuza_mail_cci'] ?? [];
|
||||
$cci = array_merge($cci, $Tcci_gamuza);
|
||||
$repondre_a = explode(',', $repondre_a);
|
||||
|
||||
$sujet = _request('sujet');
|
||||
|
@ -303,7 +356,9 @@ function gamuSend($slug, $options, $destinataires, $Tclient, $Tpdf, $redirect, &
|
|||
'chemin' => $destination,
|
||||
'nom' => $nom_fichier,
|
||||
'encodage' => 'base64',
|
||||
'mime' => $type_mime
|
||||
'mime' => $type_mime,
|
||||
'quoi' => 'docs_spip',
|
||||
'qui' => $id_document
|
||||
];
|
||||
}
|
||||
}
|
||||
|
@ -324,10 +379,33 @@ function gamuSend($slug, $options, $destinataires, $Tclient, $Tpdf, $redirect, &
|
|||
'chemin' => $destination,
|
||||
'nom' => $nom_fichier,
|
||||
'encodage' => 'base64',
|
||||
'mime' => $type_mime
|
||||
'mime' => $type_mime,
|
||||
'quoi' => 'docs_spip',
|
||||
'qui' => $id_doc
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
// les documents par tFiles (téléversés)
|
||||
$tFilename = [];
|
||||
if (!empty($Tfiles)) {
|
||||
include_spip('inc/documents');
|
||||
$rep = sous_repertoire(_DIR_CACHE . 'bigform');
|
||||
foreach ($Tfiles as $fichier) {
|
||||
$filename = $rep . $fichier['name'];
|
||||
$tFilename[] = $filename;
|
||||
deplacer_fichier_upload($fichier['tmp_name'], $filename);
|
||||
$pieces_jointes[] = [
|
||||
'chemin' => $filename,
|
||||
'nom' => $fichier['name'],
|
||||
'encodage' => 'base64',
|
||||
'mime' => $fichier['type'],
|
||||
'quoi' => 'televerser',
|
||||
'qui' => $fichier['name']
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
// les pdfs générés en fonction du contexte
|
||||
$Tpdf_del = [];
|
||||
if (!empty($Tpdfs_ok) and is_array($Tpdfs_ok)) {
|
||||
|
@ -359,7 +437,8 @@ function gamuSend($slug, $options, $destinataires, $Tclient, $Tpdf, $redirect, &
|
|||
], 'data' => $c
|
||||
]);
|
||||
|
||||
$pdf = $recup_pdf($fichier, $c);
|
||||
$pdf = $recup_pdf($fichier, $c, $args);
|
||||
if (!empty($pdf)) {
|
||||
$nom_fichier = $nom.'.pdf';
|
||||
$destination = _DIR_TMP.basename($nom_fichier);
|
||||
$Tpdf_del[] = $destination;
|
||||
|
@ -368,10 +447,13 @@ function gamuSend($slug, $options, $destinataires, $Tclient, $Tpdf, $redirect, &
|
|||
'chemin' => $destination,
|
||||
'nom' => $nom_fichier,
|
||||
'encodage' => 'base64',
|
||||
'mime' => 'application/pdf'
|
||||
'mime' => 'application/pdf',
|
||||
'quoi' => 'pdf_genere',
|
||||
'qui' => $fichier
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($f = charger_fonction('traiter_pieces_jointes', 'gamumail', true)) {
|
||||
$pc = $f($slug, $options, $destinataires, $Tclient, $Tpdf);
|
||||
|
@ -402,7 +484,7 @@ function gamuSend($slug, $options, $destinataires, $Tclient, $Tpdf, $redirect, &
|
|||
}
|
||||
$html = $html_header . $html . $html_footer;
|
||||
|
||||
// pipeline pour les traitement du contenu des slugs spécifiques de chaque plugin
|
||||
// pipeline pour les traitements du contenu des slugs spécifiques de chaque plugin
|
||||
$html = pipeline('remplacements_slug', array(
|
||||
'args' => $args,
|
||||
'data' => $html
|
||||
|
@ -418,13 +500,13 @@ function gamuSend($slug, $options, $destinataires, $Tclient, $Tpdf, $redirect, &
|
|||
'texte' => $texte,
|
||||
'cc' => $cc,
|
||||
'cci' => $cci,
|
||||
'bcc' => $cci,
|
||||
'pieces_jointes' => $pieces_jointes
|
||||
];
|
||||
if ($repondre_a) {
|
||||
$corps['repondre_a'] = $repondre_a;
|
||||
}
|
||||
|
||||
|
||||
// surcharges de traiter : d'abord les surcharges pour tous les slugs (tous_traiter.php) puis les spécifiques par slug (nom_slug_traiter.php)
|
||||
if ($f = charger_fonction('traiter', 'gamumail', true)) {
|
||||
$corps = $f($corps, $options, $slug, $destinataires, $Tclient, $Tpdf, $redirect);
|
||||
|
@ -441,12 +523,32 @@ function gamuSend($slug, $options, $destinataires, $Tclient, $Tpdf, $redirect, &
|
|||
]);
|
||||
$sujet = $remplacement_generiques($args, $sujet);
|
||||
|
||||
// extraire les multi une fois les remplacements faits
|
||||
$lang = $options['lang'] ?? lire_config('langue_site');
|
||||
$sujet = extraire_multi($sujet, $lang);
|
||||
$corps['html'] = extraire_multi($corps['html'], $lang);
|
||||
$corps['texte'] = extraire_multi($corps['texte'], $lang);
|
||||
|
||||
$args['corps'] = $corps;
|
||||
$args['sujet'] = $sujet;
|
||||
|
||||
// envoyer !
|
||||
$envoyer_mail = charger_fonction('envoyer_mail', 'inc/');
|
||||
//var_dump($destinataires);
|
||||
//var_dump($corps);
|
||||
$ok = $envoyer_mail($destinataires, $sujet, $corps);
|
||||
|
||||
/*
|
||||
* on vide les fichiers temp televerses par bigup
|
||||
*/
|
||||
if (count($tFilename)) {
|
||||
foreach ($tFilename as $file) {
|
||||
if (file_exists($file)) {
|
||||
unlink($file);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!$ok) {
|
||||
spip_log("Erreur d'envoi du mail : ","gamumail");
|
||||
spip_log($corps,"gamumail");
|
||||
|
|
26
gamumail/inc-pdf_envoyes.html
Normal file
26
gamumail/inc-pdf_envoyes.html
Normal file
|
@ -0,0 +1,26 @@
|
|||
#SET{name,Tpdfs_ok}
|
||||
<div class="pdf_envoyes">
|
||||
<B_pdf>
|
||||
<h2><:gamumail:pdf_envoyes:></h2>
|
||||
<div class="editer_groupe">
|
||||
#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
|
||||
#SET{obli,"obligatoire"}
|
||||
<div class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
|
||||
<BOUCLE_pdf(DATA){source tableau, #ENV{TFichierpdfs}}>
|
||||
<div class="choix">
|
||||
<input type="checkbox" class="checkbox" name="#GET{name}[]" value="[(#VALEUR|table_valeur{fichier})]_#CLE" id="#GET{name}_#COMPTEUR_BOUCLE" checked="checked" >
|
||||
[(#SET{url_pdf, #URL_PAGE{spipdf}
|
||||
|parametre_url{spipdf, #VALEUR|table_valeur{fichier}}
|
||||
|parametre_url{lang, #GET{lang_dest}}
|
||||
})]
|
||||
<BOUCLE_options(DATA){source tableau, #VALEUR|table_valeur{contexte}}>
|
||||
[(#SET{url_pdf,[(#GET{url_pdf}|parametre_url{#CLE,#VALEUR})]})]
|
||||
</BOUCLE_options>
|
||||
<label for="#GET{name}_#COMPTEUR_BOUCLE">[(#VALEUR|table_valeur{nom}|html_entity_decode)] : <a href="#GET{url_pdf}">voir le PDF</a></label>
|
||||
</div>
|
||||
</BOUCLE_pdf>
|
||||
</div>
|
||||
</div>
|
||||
</B_pdf>
|
||||
</div>
|
||||
|
|
@ -28,7 +28,7 @@ function gamumail_upgrade($nom_meta_base_version, $version_cible) {
|
|||
|
||||
$maj['create'] = array(
|
||||
array('maj_tables', array('spip_gamumails')),
|
||||
array('creer_compte_curl')
|
||||
array('creer_compte_curl', 'creer_slugs'),
|
||||
);
|
||||
$maj['1.0.2'] = array(array('maj_tables', array('spip_gamumails')));
|
||||
$maj['1.0.5'] = array(array('creer_compte_curl'));
|
||||
|
@ -37,14 +37,54 @@ function gamumail_upgrade($nom_meta_base_version, $version_cible) {
|
|||
$maj['1.0.12'] = array(array('creer_compte_curl'));
|
||||
$maj['1.0.14'] = array(array('maj_tables', array('spip_gamumails')));
|
||||
$maj['1.0.16'] = array(array('maj_tables', array('spip_gamumails')));
|
||||
$maj['1.0.17'] = array(array('creer_slugs'));
|
||||
|
||||
|
||||
include_spip('base/upgrade');
|
||||
maj_plugin($nom_meta_base_version, $version_cible, $maj);
|
||||
}
|
||||
|
||||
// créer les slugs fournis avec Gamumail
|
||||
function creer_slugs() {
|
||||
if (!sql_countsel('spip_gamumails', 'slug="valider_inscription"')) {
|
||||
$set = [
|
||||
'slug' => 'valider_inscription',
|
||||
'titre' => 'Message de création de compte : validation de l\'adresse mail',
|
||||
'sujet' => '[@@nom_site@@] Création de votre compte',
|
||||
'texte' => 'Bonjour @@nom@@,
|
||||
|
||||
Vous venez de créer votre compte sur @@url_site@@ avec l\'identifiant de connexion @@mail_compte@@.
|
||||
[Merci de cliquer sur ce lien pour le confirmer et vous connecter->@@url_token@@].
|
||||
|
||||
— Envoyé par @@nom_site@@ (@@url_site@@)',
|
||||
'statut' => 'publie',
|
||||
'public' => 'non',
|
||||
'rang' => '999'
|
||||
];
|
||||
sql_insertq('spip_gamumails', $set);
|
||||
}
|
||||
if (!sql_countsel('spip_gamumails', 'slug="pass_oubli"')) {
|
||||
$set = [
|
||||
'slug' => 'pass_oubli',
|
||||
'titre' => 'Message de reset du mot de passe',
|
||||
'sujet' => '[@@nom_site@@] récupération de votre mot de passe',
|
||||
'texte' => 'Pour récupérer votre accès @@nom_site@@ (@@url_site@@), merci de suivre ce lien :
|
||||
@@url_spip_pass@@
|
||||
|
||||
Vous pourrez alors saisir un nouveau mot de passe et vous connecter au site
|
||||
|
||||
— Envoyé par @@nom_site@@ (@@url_site@@)',
|
||||
'statut' => 'publie',
|
||||
'public' => 'non',
|
||||
'rang' => '999'
|
||||
];
|
||||
sql_insertq('spip_gamumails', $set);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function creer_compte_curl(){
|
||||
if (sql_countsel('nom', 'spip_auteurs', 'nom="curl_login"')){
|
||||
if (sql_countsel('spip_auteurs', 'nom="curl_login"')){
|
||||
return;
|
||||
}
|
||||
$mdp = uniqid(uniqid(),1);
|
||||
|
|
|
@ -31,5 +31,9 @@ $GLOBALS['remplacements_gamumail'] = [
|
|||
'@@nom@@' => _T('gamumail:nom'),
|
||||
'@@prenom@@' => _T('gamumail:prenom_sinon_nom'),
|
||||
'@@url_site@@' => _T('gamumail:url_site'),
|
||||
'@@nom_site@@' => _T('gamumail:nom_site'),
|
||||
'@@url_raz_passe@@' => _T('gamumail:url_raz_passe'),
|
||||
'@@url_spip_pass@@' => _T('gamumail:url_spip_pass'),
|
||||
'@@date_maintenant@@' => _T('gamumail:date_maintenant'),
|
||||
'@@date_heure_maintenant' => _T('gamumail:date_heure_maintenant'),
|
||||
];
|
||||
|
|
|
@ -3,29 +3,7 @@ if (!defined('_ECRIRE_INC_VERSION')){
|
|||
return;
|
||||
}
|
||||
|
||||
function inc_charger_pdf_dist($fichier_pdf, $contexte = []){
|
||||
|
||||
$login = lire_config('curl_login');
|
||||
$password = lire_config('curl_mdp');
|
||||
|
||||
$contexte['spipdf'] = $contexte['spipdf'] ?? $fichier_pdf ;
|
||||
$url = generer_url_public('spipdf', $contexte, true, false);
|
||||
|
||||
$CurlConnect = curl_init();
|
||||
// pour une connexion https locale avec certificat auto-signé
|
||||
if (defined('_DEBUG_AUTORISER')) {
|
||||
curl_setopt($CurlConnect, CURLOPT_SSL_VERIFYHOST, false);
|
||||
curl_setopt($CurlConnect, CURLOPT_SSL_VERIFYPEER, false);
|
||||
}
|
||||
curl_setopt($CurlConnect, CURLOPT_URL, $url);
|
||||
curl_setopt($CurlConnect, CURLOPT_RETURNTRANSFER, 1 );
|
||||
//curl_setopt($CurlConnect, CURLOPT_POSTFIELDS, $request);
|
||||
curl_setopt($CurlConnect, CURLOPT_USERPWD, $login.':'.$password);
|
||||
$retour = curl_exec($CurlConnect);
|
||||
if( ! $retour = curl_exec($CurlConnect)) {
|
||||
trigger_error(curl_error($CurlConnect));
|
||||
}
|
||||
curl_close($CurlConnect);
|
||||
|
||||
return $retour;
|
||||
function inc_charger_pdf_dist($fichier_pdf, $contexte = [], $args = []){
|
||||
$f = charger_fonction('generer_pdf','gamu');
|
||||
return $f($fichier_pdf, $contexte);
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ if (!defined('_ECRIRE_INC_VERSION')){
|
|||
* $options['cci' => true] pour passer les destinataires en cci si il y en a plus qu'un
|
||||
* $options['dest_cci' => 'toto@truc.tld'] le destinataire (to) si $options['cci'] === true
|
||||
* (sinon c'est le compte expéditeur du site)
|
||||
* $options['pdfs' => [...]] array des fichiers PDF générés à attacher dont les éléments peuvent être :
|
||||
* $options['pdfs' => [ 0 => [...], 1 => [...] ] 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',
|
||||
|
@ -32,7 +32,7 @@ if (!defined('_ECRIRE_INC_VERSION')){
|
|||
*
|
||||
*/
|
||||
function inc_envoyer_gamumail($slug, $destinataires, $options = [], $Tid_doc_piece_jointe = []) {
|
||||
//var_dump($options) ;
|
||||
//var_dump($options) ;die;
|
||||
//var_dump($destinataires);
|
||||
|
||||
include_spip('inc/texte');
|
||||
|
@ -53,10 +53,21 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = [], $Tid_doc_pie
|
|||
return $retour;
|
||||
}
|
||||
|
||||
// langue (par défaut langue du site)
|
||||
$lang = !empty($options['lang']) ? $options['lang'] : lire_config('langue_site', 'fr');
|
||||
$id_docs = '';
|
||||
if ($slug === 'no_slug' && array_key_exists('message', $options)) {
|
||||
$html = $options['message'];
|
||||
if (array_key_exists('sujet', $options)) {
|
||||
$sujet = $options['sujet'];
|
||||
} else {
|
||||
$sujet = array_shift($html);
|
||||
}
|
||||
} else {
|
||||
// contenus du slug
|
||||
$res = sql_fetsel('*', 'spip_gamumails', 'slug = "'.$slug.'"');
|
||||
if ($res) {
|
||||
$sujet = $res['sujet'];
|
||||
$sujet = extraire_multi($res['sujet'], $lang);
|
||||
$html = propre($res['texte']);
|
||||
$id_docs = $res['id_docs'];
|
||||
}
|
||||
|
@ -64,6 +75,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = [], $Tid_doc_pie
|
|||
$retour['message_erreur'] = _T("gamumail:pas_de_slug");
|
||||
return $retour;
|
||||
}
|
||||
}
|
||||
|
||||
// destinataires (id_auteur ou mails) => $pour[] est un array avec les adresses mails valides
|
||||
if (!is_array($destinataires)) {
|
||||
|
@ -84,8 +96,10 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = [], $Tid_doc_pie
|
|||
$non_vide = function ($elem) {
|
||||
return ($elem != NULL AND $elem != '');
|
||||
};
|
||||
$cc = array_filter(explode(',', lire_config('gamumail/mail_cc')), $non_vide);
|
||||
$cci = array_filter(explode(',', lire_config('gamumail/mail_cci')), $non_vide);
|
||||
$cc = array_filter(explode(',', (lire_config('gamumail/mail_cc') ?? '')), $non_vide);
|
||||
$cci = array_filter(explode(',', (lire_config('gamumail/mail_cci') ?? '')), $non_vide);
|
||||
$Tcci_gamuza = $GLOBALS['gamuza_mail_cci'] ?? [];
|
||||
$cci = array_merge($cci, $Tcci_gamuza);
|
||||
|
||||
// si on a plusieurs destinataires et $options['cci' => true] les passer en cci et mettre le compte expéditeur du site en to
|
||||
if (count($pour) > 1 AND isset($options['cci']) AND $options['cci']) {
|
||||
|
@ -182,7 +196,6 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = [], $Tid_doc_pie
|
|||
$nom = array_key_exists('nom', $pdf) ? $pdf['nom'] : $pdf;
|
||||
}
|
||||
else break;
|
||||
}
|
||||
|
||||
$recup_pdf = charger_fonction('charger_pdf','inc');
|
||||
$pdf = $recup_pdf($sq_pdf, $contexte);
|
||||
|
@ -198,6 +211,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = [], $Tid_doc_pie
|
|||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$html_header = '';
|
||||
if (find_in_path('gamumail/'.$slug .'_html_header.html')) {
|
||||
|
@ -219,12 +233,11 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = [], $Tid_doc_pie
|
|||
$args = $options;
|
||||
$args['slug'] = $slug;
|
||||
$args['destinataires'] = $pour;
|
||||
//var_dump($args) ;
|
||||
|
||||
$html = pipeline('remplacements_slug', array(
|
||||
$html = pipeline('remplacements_slug', [
|
||||
'args' => $args,
|
||||
'data' => $html
|
||||
));
|
||||
]);
|
||||
$sujet = pipeline('remplacements_slug',[
|
||||
'args' => $args,
|
||||
'data' => $sujet
|
||||
|
@ -235,6 +248,10 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = [], $Tid_doc_pie
|
|||
$html = $remplacement_generiques($args, $html);
|
||||
$sujet = $remplacement_generiques($args, $sujet);
|
||||
|
||||
// traduction des <multi> intégrés par les remplacements
|
||||
$html = extraire_multi($html, $lang);
|
||||
$sujet = extraire_multi($sujet, $lang);
|
||||
|
||||
include_spip('facteur_fonctions');
|
||||
$texte = facteur_mail_html2text($html);
|
||||
$corps = [
|
||||
|
@ -265,12 +282,11 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = [], $Tid_doc_pie
|
|||
echo '<br>$corps : ';
|
||||
var_dump($corps);
|
||||
$ok = true;
|
||||
exit;
|
||||
}
|
||||
else {
|
||||
//exit;
|
||||
} else {
|
||||
// pour ne pas avoir de warning de la fonction envoyer_mail() on doit lui passer un paramètre $from et un $header
|
||||
$from = '';
|
||||
$header = '';
|
||||
$header = $options['header'] ?? '';
|
||||
$envoyer_mail = charger_fonction('envoyer_mail', 'inc/');
|
||||
$ok = $envoyer_mail($pour, $sujet, $corps, $from, $header);
|
||||
}
|
||||
|
|
|
@ -13,6 +13,40 @@ if (!defined('_ECRIRE_INC_VERSION')) {
|
|||
*
|
||||
**/
|
||||
function inc_gamumail_remplacements_dist($args, $html) {
|
||||
$slug = $args['slug'];
|
||||
|
||||
/**
|
||||
* @@url_spip_pass@@
|
||||
* ATTENTION, il ne faut passer QUE si @@url_spip_pass@@ est présent, car la fonction
|
||||
* auteur_attribuer_jeton ne peut etre appeler qu'une fois, du mois, il faut utilser le jeton de son dernier appel.
|
||||
**/
|
||||
if (strpos($html, '@@url_spip_pass@@') !== false) {
|
||||
$url_spip_pass = '';
|
||||
if (!empty($args['destinataires'][0])) {
|
||||
$id_auteur = (int) sql_getfetsel('id_auteur', 'spip_auteurs', 'email='.sql_quote($args['destinataires'][0]));
|
||||
include_spip('action/inscrire_auteur');
|
||||
$cookie = auteur_attribuer_jeton($id_auteur);
|
||||
$url_spip_pass = url_absolue(
|
||||
generer_url_public('spip_pass', "p=$cookie"),
|
||||
$GLOBALS['meta']['adresse_site'] . '/'
|
||||
);
|
||||
}
|
||||
$html = gamumail_remplacer_modele('url_spip_pass', $url_spip_pass, $html);
|
||||
}
|
||||
|
||||
/**
|
||||
* @@url_token@@ pour le mail de validation de création de compte (slug valider_inscription) + @@mail_compte@@
|
||||
* en SPIP 4.2+ on DOIT récupérer l'URL de validation générée par action_inscrire_auteur()
|
||||
**/
|
||||
if ($slug === 'valider_inscription'
|
||||
&& ($id_auteur = $args['options']['id_auteur'])
|
||||
&& ($url_confirm = $args['options']['url_confirm'])
|
||||
) {
|
||||
$auteur = sql_fetsel('email', 'spip_auteurs', 'id_auteur='.intval($id_auteur));
|
||||
$html = str_replace('@@url_token@@', $url_confirm, $html);
|
||||
$html = str_replace('@@mail_compte@@', $auteur['email'], $html);
|
||||
}
|
||||
|
||||
/**
|
||||
* @@nom@@ => $nom ou un espace pour vider le champ @@nom@@
|
||||
**/
|
||||
|
@ -36,12 +70,24 @@ function inc_gamumail_remplacements_dist($args, $html) {
|
|||
$url_site = lire_config('adresse_site');
|
||||
$html = gamumail_remplacer_modele('url_site', $url_site, $html);
|
||||
|
||||
/**
|
||||
* @@nom_site@@ => nom du site
|
||||
**/
|
||||
$nom_site = lire_config('nom_site');
|
||||
$html = gamumail_remplacer_modele('nom_site', $nom_site, $html);
|
||||
|
||||
/**
|
||||
* @@url_raz_passe@@ => URL de la page de récupération de mot de passe
|
||||
**/
|
||||
$url_raz_passe = url_absolue(generer_url_public('spip_pass'));
|
||||
$html = gamumail_remplacer_modele('url_raz_passe', $url_raz_passe, $html);
|
||||
|
||||
/**
|
||||
* @@date_maintenant@@ => date actuelle, au format jj/mm/aaaa
|
||||
* @@date_heure_maintenant@@ => date + heure actuelle, au format jj/mm/aaaa HH:mm:ss
|
||||
**/
|
||||
$html = gamumail_remplacer_modele('date_maintenant', date('d/m/Y'), $html);
|
||||
$html = gamumail_remplacer_modele('date_heure_maintenant', date('d/m/Y H:i:s'), $html);
|
||||
|
||||
return $html;
|
||||
}
|
||||
|
|
|
@ -80,7 +80,7 @@
|
|||
<div class="une_conf">
|
||||
<small class="name_config">gamumail/mail_cc</small>
|
||||
<h4><:gamumail:email_en_cc:></h4>
|
||||
<div class="#EDIT{meta-gamumail/mail_cc} inbl w600p">[(#CONFIG{gamumail/mail_cc}|sinon{<i><:gamumail:dbe_clic_editer:></i>})]</div>
|
||||
<div class="#EDIT{meta-gamumail/mail_cc} inbl w600p nomulti">[(#CONFIG{gamumail/mail_cc}|sinon{<i><:gamumail:dbe_clic_editer:></i>})]</div>
|
||||
<p class="explication"><:gamumail:plusieurs_mails_separer_virgule:>.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -88,7 +88,7 @@
|
|||
<div class="une_conf">
|
||||
<small class="name_config">gamumail/mail_cci</small>
|
||||
<h4><:gamumail:email_en_cci:></h4>
|
||||
<div class="#EDIT{meta-gamumail/mail_cci} inbl w600p">[(#CONFIG{gamumail/mail_cci}|sinon{<i><:gamumail:dbe_clic_editer:></i>})]</div>
|
||||
<div class="#EDIT{meta-gamumail/mail_cci} inbl w600p nomulti">[(#CONFIG{gamumail/mail_cci}|sinon{<i><:gamumail:dbe_clic_editer:></i>})]</div>
|
||||
<p class="explication"><:gamumail:plusieurs_mails_separer_virgule:>.</p>
|
||||
</div>
|
||||
|
||||
|
@ -114,7 +114,7 @@
|
|||
<div class="objet--slug">
|
||||
<strong><:gamumail:slug:>: </strong>
|
||||
[(#AUTORISER{modifier_nom_slug, gamumail, #ID_GAMUMAIL}|?{
|
||||
<span class="[(#EDIT{nom_slug})]">[(#SLUG|sinon{<:gamumail:dbe_clic_editer:>})]</span>
|
||||
<span class="[(#EDIT{nom_slug})] nomulti">[(#SLUG|sinon{<:gamumail:dbe_clic_editer:>})]</span>
|
||||
,
|
||||
<span class="">[(#SLUG)]</span>
|
||||
})]
|
||||
|
@ -131,14 +131,17 @@
|
|||
</div>
|
||||
<div class="objet--mail">
|
||||
<span><strong><:gamumail:documents_attaches:> :</strong> <em class="explication"><:gamumail:liste_id_separes:> , </em></span>
|
||||
<div class="texte #EDIT{id_docs}">
|
||||
<div class="texte #EDIT{id_docs} nomulti">
|
||||
[(#ID_DOCS|sinon{<:gamumail:dbe_clic_editer:>})]
|
||||
</div>
|
||||
<B_docs_spip>
|
||||
<div class="details_docs_spip">
|
||||
<ul>
|
||||
<BOUCLE_docs_spip(DOCUMENTS){id_document IN #ID_DOCS|explode{','}}{tous}>
|
||||
<li><strong>#ID_DOCUMENT :</strong> #TITRE ([<a class="mediabox" href="#URL_DOCUMENT">(#FICHIER|basename)</a>])</li>
|
||||
<li><strong>#ID_DOCUMENT :</strong> #TITRE
|
||||
([<a class="mediabox" href="#URL_DOCUMENT" title="Voir le document">(#FICHIER|basename)</a>)]
|
||||
[ / <a href="(#URL_ECRIRE{document_edit}|parametre_url{id_document,#ID_DOCUMENT})"><i class="fa fa-edit"></i> Gérer le document</a>]
|
||||
</li>
|
||||
</BOUCLE_docs_spip>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
48
inclure/inc-bigup_liste_fichiers_gamumail.html
Normal file
48
inclure/inc-bigup_liste_fichiers_gamumail.html
Normal file
|
@ -0,0 +1,48 @@
|
|||
<style type="text/css" media="screen">
|
||||
.fichier .description {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
/* margin-bottom: 6px; */
|
||||
}
|
||||
.fichier .description:hover {
|
||||
background-color:rgba(177, 187, 196,0.5);
|
||||
}
|
||||
.fichier .previsualisation {
|
||||
margin: 5px;
|
||||
}
|
||||
.html_titre {
|
||||
display: none!important;
|
||||
}
|
||||
</style>
|
||||
[(#REM)
|
||||
surcharge du fichier de bigform :
|
||||
- inclure/inc-bigup_liste_fichiers.html
|
||||
]
|
||||
<B_fichiers>
|
||||
<div class='bigup_fichiers fichiers_[(#ENV{nom}|concat{#ENV{multiple}|=={oui}|?{\[\]}}|bigup_nom2classe)]'>
|
||||
<BOUCLE_fichiers(DATA){source tableau, #FICHIERS|bigup_lister_fichiers{#ENV{nom},#ENV{multiple}}}>
|
||||
<div class='fichier'>
|
||||
<div class="description">
|
||||
[(#VALEUR{bigup/vignette/data}|oui)
|
||||
<div class="previsualisation #VALEUR{bigup/extension}" title="[(#NAME|attribut_html)] ([(#SIZE|taille_en_octets)])">
|
||||
<span style="background-image:url([(#VALEUR{bigup/vignette/data})]);"></span>
|
||||
</div>]
|
||||
[(#VALEUR{bigup/vignette/data}|non)
|
||||
<div class="vignette_extension #VALEUR{bigup/extension}" title="[(#TYPE|attribut_html)]"><span></span></div>]
|
||||
<div class='infos'>
|
||||
<span class='name'><strong>#NAME</strong></span>
|
||||
<span class='size'>[(#SIZE|taille_en_octets)]</span>
|
||||
</div>
|
||||
<div class='actions'>
|
||||
<button class='btn' type='submit'
|
||||
name='bigup_enlever_fichier' value="#VALEUR{bigup/identifiant}"
|
||||
onclick="jQuery(this).parents('form').find('input,textarea,select').filter('[required]').prop('required', false); return true;">
|
||||
<:bigup:bouton_enlever:>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</BOUCLE_fichiers>
|
||||
</div>
|
||||
</B_fichiers>
|
||||
|
112
lang/gamumail_en.php
Normal file
112
lang/gamumail_en.php
Normal file
|
@ -0,0 +1,112 @@
|
|||
<?php
|
||||
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
|
||||
|
||||
if (!defined('_ECRIRE_INC_VERSION')) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
$GLOBALS[$GLOBALS['idx_lang']] = array(
|
||||
|
||||
// A
|
||||
'ajouter_lien_gamumail' => 'Ajouter ce gamumail',
|
||||
'avertissement_remplacements' => 'NB: attention! tous les autres remplacements sont spécifiques de leur modèle et ne peuvent êtres utilisés dans un autre modèle',
|
||||
'autres_fichiers_attaches' => 'Autres Fichiers attachés',
|
||||
|
||||
// C
|
||||
'champ_slug_label' => 'Slug',
|
||||
'champ_sujet_label' => 'Sujet',
|
||||
'champ_texte_label' => 'Texte',
|
||||
'confirmer_supprimer_gamumail' => 'Confirmez-vous la suppression de cet gamumail ?',
|
||||
'choix_slug' => 'Choix du modèle',
|
||||
'contenu_mail' => 'Contenu du mail',
|
||||
'creer_modele' => 'Créer un modèle de mail',
|
||||
'corps_message' => 'Text',
|
||||
|
||||
// D
|
||||
'documents_attaches' => 'Documents attachés',
|
||||
'dbe_clic_editer' => 'Double clic pour éditer',
|
||||
'dbe_clic_editer_champs' => 'Double clic pour éditer les champs des modèles.',
|
||||
'date_maintenant' => 'Current date (in dd/mm/yyyy format)',
|
||||
'date_heure_maintenant' => 'Date + current time (in dd/mm/yyyy HH:mm:ss format)',
|
||||
|
||||
//EE
|
||||
'envoyer' => 'Envoyer',
|
||||
"erreur_envoi_mail" => "Erreur dans l'envoi de votre mail",
|
||||
'erreur_format_slug' => 'Le slug est un identifiant qui ne peut contenir que des chiffres, lettres et _ ou -',
|
||||
'email_en_cc' => 'Emails en copie "cc" des différents messages',
|
||||
'email_en_cci' => 'Emails en copie cachée "cci" des différents messages',
|
||||
'editer_titre' => 'Editer le titre',
|
||||
'explication_mail_auto_uniquement' => 'permet de ne pas afficher les modèles utilisés uniquement en envoi automatique',
|
||||
|
||||
// F
|
||||
'fichiers_annexes' => 'Fichiers annexes',
|
||||
|
||||
// I
|
||||
'icone_creer_gamumail' => 'Créer un gamumail',
|
||||
'icone_modifier_gamumail' => 'Modifier ce gamumail',
|
||||
'info_1_gamumail' => 'Un gamumail',
|
||||
'info_aucun_gamumail' => 'Aucun gamumail',
|
||||
'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@',
|
||||
|
||||
// L
|
||||
'liste_id_separes' => 'liste d\'id_document séparés par une virgule',
|
||||
|
||||
//MM
|
||||
"mail_envoye" => "Votre message a bien été envoyé",
|
||||
'mails_destinataires_en_erreur' => 'Les destinataires @mails_erreur@ ne sont pas des adresses mails valides',
|
||||
'message' => 'Message',
|
||||
'modele_visible' => 'Modèle disponible',
|
||||
'modele_non_visible' => 'Modèle non disponible',
|
||||
'modele_masquer' => 'Masquer le modèle',
|
||||
'modele_afficher' => 'Afficher le modèle',
|
||||
|
||||
// N
|
||||
'nom' => 'Prénom Nom du destinataire (ou Nom si pas de champ "prenom")',
|
||||
|
||||
// O
|
||||
'objet' => 'Objet',
|
||||
|
||||
// P
|
||||
'pas_de_slug' => 'Pas de slug avec cet identifiant',
|
||||
'plusieurs_mails_separer_virgule' => 'Si plusieurs emails, les séparer par une virgule.',
|
||||
'pdf_envoyes' => 'Fichiers PDF générés',
|
||||
'prenom_sinon_nom' => 'Prénom du destinataire (ou Nom si pas de champ "prenom")',
|
||||
|
||||
// R
|
||||
'retirer_lien_gamumail' => 'Retirer ce gamumail',
|
||||
'retirer_tous_liens_gamumails' => 'Retirer tous les gamumails',
|
||||
'remplacements_disponibles' => 'Remplacements automatiques disponibles :',
|
||||
|
||||
// S
|
||||
'supprimer_gamumail' => 'Supprimer cet gamumail',
|
||||
'selectionnez_modele' => 'Sélectionnez un modèle...',
|
||||
'supprimer_modele' => 'Supprimer le modèle',
|
||||
'slug' => 'Slug',
|
||||
'sujet' => 'Subject',
|
||||
'switch_modele_public' => 'Modifier la visibilité publique du modèle',
|
||||
|
||||
// T
|
||||
'texte_ajouter_gamumail' => 'Ajouter un gamumail',
|
||||
'texte_changer_statut_gamumail' => 'Ce gamumail est :',
|
||||
'texte_creer_associer_gamumail' => 'Créer et associer un gamumail',
|
||||
'texte_definir_comme_traduction_gamumail' => 'Ce gamumail est une traduction du gamumail numéro :',
|
||||
'titre_gamumail' => 'Gamumail',
|
||||
'titre_gamumails' => 'Gamumails',
|
||||
'titre_gamumails_rubrique' => 'Gamumails de la rubrique',
|
||||
'titre_langue_gamumail' => 'Langue de ce gamumail',
|
||||
'titre_logo_gamumail' => 'Logo de ce gamumail',
|
||||
'titre_objets_lies_gamumail' => 'Liés à ce gamumail',
|
||||
|
||||
// U
|
||||
'url_site' => 'URL du site',
|
||||
'url_raz_passe' => 'URL de la page de récupération de mot de passe',
|
||||
'url_spip_pass' => 'URL of the link to reset the account password <small>(only to be used in the password reset slug!)</small>',
|
||||
|
||||
// V
|
||||
'visibilite_public' => 'Disponible dans la liste des modèles',
|
||||
);
|
|
@ -21,11 +21,14 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
|
|||
'choix_slug' => 'Choix du modèle',
|
||||
'contenu_mail' => 'Contenu du mail',
|
||||
'creer_modele' => 'Créer un modèle de mail',
|
||||
'corps_message' => 'Texte',
|
||||
|
||||
// D
|
||||
'documents_attaches' => 'Documents attachés',
|
||||
'dbe_clic_editer' => 'Double clic pour éditer',
|
||||
'dbe_clic_editer_champs' => 'Double clic pour éditer les champs des modèles.',
|
||||
'date_maintenant' => 'Date actuelle (au format jj/mm/aaaa)',
|
||||
'date_heure_maintenant' => 'Date + heure actuelle (au format jj/mm/aaaa HH:mm:ss)',
|
||||
|
||||
//EE
|
||||
'envoyer' => 'Envoyer',
|
||||
|
@ -38,6 +41,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
|
|||
|
||||
// F
|
||||
'fichiers_annexes' => 'Fichiers annexes',
|
||||
'fichiers_televerser' => 'Fichiers téléversés',
|
||||
|
||||
// I
|
||||
'icone_creer_gamumail' => 'Créer un gamumail',
|
||||
|
@ -84,6 +88,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
|
|||
'selectionnez_modele' => 'Sélectionnez un modèle...',
|
||||
'supprimer_modele' => 'Supprimer le modèle',
|
||||
'slug' => 'Slug',
|
||||
'sujet' => 'Sujet',
|
||||
'switch_modele_public' => 'Modifier la visibilité publique du modèle',
|
||||
|
||||
// T
|
||||
|
@ -101,6 +106,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
|
|||
// U
|
||||
'url_site' => 'URL du site',
|
||||
'url_raz_passe' => 'URL de la page de récupération de mot de passe',
|
||||
'url_spip_pass' => 'URL du lien pour réinitialiser le mot de passe du compte <small>(à n\'utiliser que dans le slug de reset de passe !)</small>',
|
||||
|
||||
// V
|
||||
'visibilite_public' => 'Disponible dans la liste des modèles',
|
||||
|
|
10
paquet.xml
10
paquet.xml
|
@ -1,12 +1,12 @@
|
|||
<paquet
|
||||
prefix="gamumail"
|
||||
categorie="communication"
|
||||
version="1.2.0"
|
||||
version="1.4.6"
|
||||
etat="dev"
|
||||
compatibilite="[3.2.0;4.1.*]"
|
||||
compatibilite="[3.2.0;4.*]"
|
||||
logo="prive/themes/spip/images/gamumail-64.png"
|
||||
documentation=""
|
||||
schema="1.0.16"
|
||||
schema="1.0.17"
|
||||
>
|
||||
|
||||
<nom>GamuMail</nom>
|
||||
|
@ -15,13 +15,15 @@
|
|||
|
||||
<licence>GNU/GPL</licence>
|
||||
|
||||
<necessite nom="bigform" compatibilite="[1.0.0;[" />
|
||||
<necessite nom="bigform" compatibilite="[1.2.3;[" />
|
||||
<necessite nom="crayons" compatibilite="[2.0.10;[" />
|
||||
<necessite nom="facteur" compatibilite="[4.0.0;[" />
|
||||
<necessite nom="gamufonctions" compatibilite="[1.3.4;[" />
|
||||
|
||||
<pipeline nom="remplacements_slug" action='' />
|
||||
<pipeline nom="post_gamumail_ok" action='' />
|
||||
<pipeline nom="tpdf_charger_contexte" action='' />
|
||||
<pipeline nom="gamumail_filtrer_tPDF" action='' />
|
||||
|
||||
<pipeline nom="autoriser" inclure="gamumail_autorisations.php" />
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue