amélioration du système de remplacements @@truc_a_remplacer@@ pour permettre à Gamumail de fournir des remplacement génériques (via inc/gamumail_remplacements.php). Passage de la doc intégrée des remplacements via ['remplacements_gamumail'] pour permettre à chaque plugin de fournir la doc de ses remplacements
This commit is contained in:
parent
17ba9f097a
commit
ec5dcd9fe8
7 changed files with 87 additions and 7 deletions
12
README.md
12
README.md
|
@ -46,9 +46,15 @@ ex de fichier :
|
||||||
* gamumail/SLUG_fichier.html -> à la fin du formulaire
|
* gamumail/SLUG_fichier.html -> à la fin du formulaire
|
||||||
|
|
||||||
### aide à la rédaction du contenu:
|
### aide à la rédaction du contenu:
|
||||||
- le fichier **gamumail/remplacement_slugs.html** (surchargeable donc) s'affiche en bas de la page de configuration des modèles **inclure/gamumail_config.html**
|
- 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**
|
et du formulaire d'envoi **formulaires/gamumail.html** : il permet de lister les remplacements effectués pour **tous les modèles** qui sont :
|
||||||
(= ceux fournis par le pipeline **remplacement_slugs**, cf ci-dessous)
|
- 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**
|
- 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 :
|
### exemple de page d'envoi de mail en choisissant un slug parmi ceux existant :
|
||||||
|
|
|
@ -6,7 +6,9 @@
|
||||||
<div class="remplacements_slugs">
|
<div class="remplacements_slugs">
|
||||||
<h3 class="spip"><:gamumail:remplacements_disponibles:></h3>
|
<h3 class="spip"><:gamumail:remplacements_disponibles:></h3>
|
||||||
<ul class="">
|
<ul class="">
|
||||||
<li><strong>@@exemple_chaine@@</strong> : remplacement de la chaine</li>
|
<BOUCLE_remplace(DATA){source tableau, #VAL|afficher_remplacements}>
|
||||||
|
<li><strong>[(#CLE)]</strong> : [(#VALEUR)]</li>
|
||||||
|
</BOUCLE_remplace>
|
||||||
</ul>
|
</ul>
|
||||||
<em><:gamumail:avertissement_remplacements:></em>
|
<em><:gamumail:avertissement_remplacements:></em>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -90,7 +90,6 @@ function gamumail_verifier_dist($erreurs, $options, $slug, $destinataires='', $T
|
||||||
function gamumail_traiter_dist($corps, $options, $slug, $destinataires='') {
|
function gamumail_traiter_dist($corps, $options, $slug, $destinataires='') {
|
||||||
|
|
||||||
$html = $corps['html'];
|
$html = $corps['html'];
|
||||||
$html = gamumail_remplacer_modele($html, '@@truc_a_remplacer@@', 'le machin qui remplace');
|
|
||||||
include_spip('classes/facteur');
|
include_spip('classes/facteur');
|
||||||
$texte = facteur_mail_html2text($html);
|
$texte = facteur_mail_html2text($html);
|
||||||
$corps['html'] = $html;
|
$corps['html'] = $html;
|
||||||
|
@ -99,7 +98,6 @@ function gamumail_traiter_dist($corps, $options, $slug, $destinataires='') {
|
||||||
return $corps;
|
return $corps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function gamumail_remplacer_modele($modele, $val, $texte){
|
function gamumail_remplacer_modele($modele, $val, $texte){
|
||||||
if ($texte and $modele and $val) {
|
if ($texte and $modele and $val) {
|
||||||
return str_replace('@@'.$modele.'@@', $val, $texte);
|
return str_replace('@@'.$modele.'@@', $val, $texte);
|
||||||
|
@ -107,3 +105,21 @@ function gamumail_remplacer_modele($modele, $val, $texte){
|
||||||
return $texte;
|
return $texte;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* pour la doc fournie par inclure/remplacements_slugs.html
|
||||||
|
* $GLOBALS['remplacements_gamumail'] est l'array global des remplacements dans les slugs (sera complété avec les remplacements des plugins)
|
||||||
|
* de la forme : ['@@truc_a_remplacer_1@@' => 'le machin qui remplace 1', '@@truc_a_remplacer_2@@' => _T('gamumail:chaine_de_langue_2')...];
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
$GLOBALS['remplacements_gamumail'] = [
|
||||||
|
'@@nom@@' => _T('gamumail:nom'),
|
||||||
|
'@@url_site@@' => _T('gamumail:url_site'),
|
||||||
|
'@@url_raz_passe@@' => _T('gamumail:url_raz_passe'),
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* le filtre pour retourner l'array des remplacements
|
||||||
|
**/
|
||||||
|
function afficher_remplacements() {
|
||||||
|
return $GLOBALS['remplacements_gamumail'];
|
||||||
|
}
|
||||||
|
|
|
@ -20,3 +20,4 @@ function crayons_determine_input_mode_type_gamumail($type, $champ, $sqltype) {
|
||||||
|
|
||||||
return in_array($champ, $Ttextarea) ? 'texte' : 'ligne';
|
return in_array($champ, $Ttextarea) ? 'texte' : 'ligne';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -171,7 +171,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
|
||||||
}
|
}
|
||||||
$html = $html_header . $html . $html_footer;
|
$html = $html_header . $html . $html_footer;
|
||||||
|
|
||||||
// pipeline pour les traitement du contenu des slugs spécifiques de chaque plugins
|
// pipeline pour les remplacements du contenu des slugs spécifiques de chaque plugins
|
||||||
$args = $options;
|
$args = $options;
|
||||||
$args['slug'] = $slug;
|
$args['slug'] = $slug;
|
||||||
$args['destinataires'] = $pour;
|
$args['destinataires'] = $pour;
|
||||||
|
@ -179,6 +179,11 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
|
||||||
'args' => $args,
|
'args' => $args,
|
||||||
'data' => $html
|
'data' => $html
|
||||||
));
|
));
|
||||||
|
|
||||||
|
// traitement des remplacements génériques fournis par Gamumail
|
||||||
|
$remplacement_generiques = charger_fonction('gamumail_remplacements', 'inc');
|
||||||
|
$html = $remplacement_generiques($args, $html);
|
||||||
|
|
||||||
$texte = facteur_mail_html2text($html);
|
$texte = facteur_mail_html2text($html);
|
||||||
|
|
||||||
$corps = [
|
$corps = [
|
||||||
|
@ -209,6 +214,7 @@ function inc_envoyer_gamumail($slug, $destinataires, $options = []) {
|
||||||
echo '<br>$corps : ';
|
echo '<br>$corps : ';
|
||||||
var_dump($corps);
|
var_dump($corps);
|
||||||
$ok = true;
|
$ok = true;
|
||||||
|
exit;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$envoyer_mail = charger_fonction('envoyer_mail', 'inc/');
|
$envoyer_mail = charger_fonction('envoyer_mail', 'inc/');
|
||||||
|
|
42
inc/gamumail_remplacements.php
Normal file
42
inc/gamumail_remplacements.php
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
<?php
|
||||||
|
if (!defined('_ECRIRE_INC_VERSION')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fonction pour les remplacements génériques fournis par gamumail
|
||||||
|
*
|
||||||
|
* @param array $args = ['slug' => $slug, 'destinataires' => $pour, [$options]]
|
||||||
|
* @param string $data = $html
|
||||||
|
*
|
||||||
|
* @return $html
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
function inc_gamumail_remplacements_dist($args, $html) {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @@nom@@ => Prenom Nom | Nom (gère la présence/absence du champ prenom dans spip_auteurs)
|
||||||
|
**/
|
||||||
|
$nom = sql_getfetsel('nom', 'spip_auteurs', 'email='.sql_quote($args['destinataires'][0]));
|
||||||
|
$trouver_table = charger_fonction('trouver_table', 'base');
|
||||||
|
$desc = $trouver_table('spip_auteurs');
|
||||||
|
if (array_key_exists('prenom', $desc['field'])
|
||||||
|
and $prenom = sql_getfetsel('prenom', 'spip_auteurs', 'email='.sql_quote($args['destinataires'][0]))) {
|
||||||
|
$nom = $prenom.' '.$nom;
|
||||||
|
}
|
||||||
|
$html = gamumail_remplacer_modele('nom', ucwords($nom), $html);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @@url_site@@ => URL du site
|
||||||
|
**/
|
||||||
|
$url_site = lire_config('adresse_site');
|
||||||
|
$html = gamumail_remplacer_modele('url_site', $url_site, $html);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @@url_raz_passe@@ => URL de la page de récupération de mot de passe
|
||||||
|
**/
|
||||||
|
$html = gamumail_remplacer_modele('url_raz_passe', $url_site.'?page=spip_pass', $html);
|
||||||
|
|
||||||
|
|
||||||
|
return $html;
|
||||||
|
}
|
|
@ -62,6 +62,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
|
||||||
'modele_masquer' => 'Masquer le modèle',
|
'modele_masquer' => 'Masquer le modèle',
|
||||||
'modele_afficher' => 'Afficher le modèle',
|
'modele_afficher' => 'Afficher le modèle',
|
||||||
|
|
||||||
|
// N
|
||||||
|
'nom' => 'Prénom Nom du destinataire (ou Nom si pas de champ "prenom")',
|
||||||
|
|
||||||
// O
|
// O
|
||||||
'objet' => 'Objet',
|
'objet' => 'Objet',
|
||||||
|
|
||||||
|
@ -93,6 +96,10 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
|
||||||
'titre_logo_gamumail' => 'Logo de ce gamumail',
|
'titre_logo_gamumail' => 'Logo de ce gamumail',
|
||||||
'titre_objets_lies_gamumail' => 'Liés à 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',
|
||||||
|
|
||||||
// V
|
// V
|
||||||
'visibilite_public' => 'Disponible dans la liste des modèles',
|
'visibilite_public' => 'Disponible dans la liste des modèles',
|
||||||
);
|
);
|
||||||
|
|
Loading…
Add table
Reference in a new issue