Gestion de l'envoi du formulaire :
- id_auteur du param - liste d'id_auteur de la conf - liste d'email de la conf -
This commit is contained in:
parent
8763de3b1a
commit
e6f2087226
9 changed files with 263 additions and 7 deletions
5
content/contact.html
Normal file
5
content/contact.html
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
#CACHE{0}
|
||||||
|
|
||||||
|
<div class="inner">
|
||||||
|
[(#FORMULAIRE_GAMUCONTACT{#ENV{id_auteur}, #ENV{redirect}})]
|
||||||
|
</div>
|
|
@ -9,6 +9,32 @@
|
||||||
<div>
|
<div>
|
||||||
#ACTION_FORMULAIRE
|
#ACTION_FORMULAIRE
|
||||||
|
|
||||||
|
<div class="editer_groupe">
|
||||||
|
#SET{name,liste_emails}
|
||||||
|
#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}">Liste d'emails</label>
|
||||||
|
[<span class="erreur_message">(#GET{erreurs})</span>]
|
||||||
|
<textarea class="textarea Liste_emails" name="#GET{name}" id="#GET{name}">#ENV{#GET{name}}</textarea>
|
||||||
|
<p class="exlication">Liste d'emails séparés par des ;</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="editer_groupe">
|
||||||
|
#SET{name,liste_id_auteur}
|
||||||
|
#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}">Liste d'id_auteur</label>
|
||||||
|
[<span class="erreur_message">(#GET{erreurs})</span>]
|
||||||
|
<input type="text" class="text liste_id_auteur" name="#GET{name}" id="#GET{name}" value="#ENV{#GET{name}}" >
|
||||||
|
<p class="exlication">Liste d'id_auteur séparés par des ;</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<input type="hidden" name="_meta_casier" value="gamucontact" />
|
<input type="hidden" name="_meta_casier" value="gamucontact" />
|
||||||
<p class="boutons"><span class="image_loading"> </span><input type="submit" class="submit" value="<:bouton_enregistrer|attribut_html:/>" /></p>
|
<p class="boutons"><span class="image_loading"> </span><input type="submit" class="submit" value="<:bouton_enregistrer|attribut_html:/>" /></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
27
formulaires/gamucontact.html
Normal file
27
formulaires/gamucontact.html
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
<div class="formulaire_spip formulaire_#FORM">
|
||||||
|
|
||||||
|
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
|
||||||
|
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
|
||||||
|
|
||||||
|
<form name="formulaire_#FORM" action="#ENV{action}" method="post"><div>
|
||||||
|
#ACTION_FORMULAIRE{#ENV{action}}
|
||||||
|
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
|
<legend><:gamucontact:votre_message:></legend>
|
||||||
|
#GENERER_SAISIES{#ENV{_saisies}}
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
[(#REM) Piege a robots spammeurs ]
|
||||||
|
<p style="display:none;">
|
||||||
|
<label for="contact_nobot"><:antispam_champ_vide:></label>
|
||||||
|
<input type="text" class="text" name="nobot" id="contact_nobot" value="#ENV{nobot}" size="10" />
|
||||||
|
</p>
|
||||||
|
<div class="boutons">
|
||||||
|
<button type="submit" class="btn">
|
||||||
|
<i class="fas fa-paper-plane"></i>
|
||||||
|
<:gamucontact:envoyer:></button>
|
||||||
|
</div>
|
||||||
|
</div></form>
|
||||||
|
|
||||||
|
</div>
|
116
formulaires/gamucontact.php
Normal file
116
formulaires/gamucontact.php
Normal file
|
@ -0,0 +1,116 @@
|
||||||
|
<?php
|
||||||
|
if (!defined('_ECRIRE_INC_VERSION')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
function formulaires_gamucontact_saisies_dist($id_auteur = 0, $redirect = '') {
|
||||||
|
$saisies = $GLOBALS['gamucontact'];
|
||||||
|
return $saisies;
|
||||||
|
}
|
||||||
|
|
||||||
|
function formulaires_gamucontact_charger_dist($id_auteur = 0, $redirect = '') {
|
||||||
|
$valeurs = array(
|
||||||
|
);
|
||||||
|
|
||||||
|
return $valeurs;
|
||||||
|
}
|
||||||
|
|
||||||
|
function formulaires_gamucontact_verifier_dist($id_auteur = 0, $redirect = '') {
|
||||||
|
|
||||||
|
$erreurs = array();
|
||||||
|
|
||||||
|
if (_request('nobot')) {
|
||||||
|
$erreurs['nobot'] = _T('contact:message_erreur_robot');
|
||||||
|
}
|
||||||
|
|
||||||
|
$saisies = $GLOBALS['gamucontact'];
|
||||||
|
//champs obligatoire
|
||||||
|
foreach ($saisies as $s) {
|
||||||
|
if ($s['options']['obligatoire'] === 'oui') {
|
||||||
|
$name = $s['options']['nom'];
|
||||||
|
if (!_request($name)) $erreurs[$name] = 'Ce champs est obligatoire';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $erreurs;
|
||||||
|
}
|
||||||
|
|
||||||
|
function formulaires_gamucontact_traiter_dist($id_auteur = 0, $redirect = '') {
|
||||||
|
|
||||||
|
$retour = array();
|
||||||
|
$saisies = $GLOBALS['gamucontact'];
|
||||||
|
|
||||||
|
// $retour['message_ok'] = 'bravo';
|
||||||
|
|
||||||
|
if (!empty($saisies)) {
|
||||||
|
foreach ($saisies as $saisie) {
|
||||||
|
$champ = $saisie['options']['nom'];
|
||||||
|
if (isset($f) and !empty($f)) {
|
||||||
|
$set = $f($id_auteur, $champ, _request($champ), $set);
|
||||||
|
} else {
|
||||||
|
$set[$champ] = _request($champ);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$set['date_heure'] = date("Y-m-d H:i:s");
|
||||||
|
if (count($set) > 0) {
|
||||||
|
$set = pipeline(
|
||||||
|
'pre_edition',
|
||||||
|
array(
|
||||||
|
'args' => array(
|
||||||
|
'action' => 'gamucontact_pre_contact',
|
||||||
|
),
|
||||||
|
'data' => $set
|
||||||
|
)
|
||||||
|
);
|
||||||
|
$id_message = sql_insertq('spip_messages', $set);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$destinataires = [];
|
||||||
|
if (intval($id_auteur)) {
|
||||||
|
$email = sql_getfetsel('email', 'spip_auteurs', 'id_auteur='.intval($id_auteur));
|
||||||
|
if ($email) {
|
||||||
|
$destinataires[] = $email;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$liste_emails = lire_config('gamucontact/liste_emails');
|
||||||
|
if (strlen($liste_emails)) {
|
||||||
|
$Tliste_emails = explode(';', $liste_emails);
|
||||||
|
if (is_array($Tliste_emails) and count($Tliste_emails)) {
|
||||||
|
$destinataires = array_merge($Tliste_emails, $destinataires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$liste_id_auteur = lire_config('gamucontact/liste_id_auteur');
|
||||||
|
if (strlen($liste_id_auteur)) {
|
||||||
|
$Tliste_id_auteur = explode(';', $liste_id_auteur);
|
||||||
|
if (is_array($Tliste_id_auteur) and count($Tliste_id_auteur)) {
|
||||||
|
$t = sql_allfetsel('email', 'spip_auteurs', sql_in('id_auteur', $Tliste_id_auteur));
|
||||||
|
if(is_array($t) and count($t)) {
|
||||||
|
$t = array_column($t, 'email');
|
||||||
|
$destinataires = array_merge($t, $destinataires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (count($destinataires)) {
|
||||||
|
$html = recuperer_fond('modeles/gamucontact_message', ['id_message' => $id_message]);
|
||||||
|
include_spip('classes/facteur');
|
||||||
|
$texte = Facteur::html2text($html);
|
||||||
|
|
||||||
|
$corps = array(
|
||||||
|
'html' => $html,
|
||||||
|
'texte' => $texte,
|
||||||
|
);
|
||||||
|
|
||||||
|
$envoyer_mail = charger_fonction('envoyer_mail', 'inc');
|
||||||
|
$envoyer_mail($destinataires, _request('objet'), $corps, '', 'X-Originating-IP: '.$GLOBALS['ip']);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if ($redirect) {
|
||||||
|
$retour['redirect'] = $redirect;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $retour;
|
||||||
|
}
|
|
@ -26,6 +26,9 @@ if (!defined('_ECRIRE_INC_VERSION')) {
|
||||||
function gamucontact_upgrade($nom_meta_base_version, $version_cible) {
|
function gamucontact_upgrade($nom_meta_base_version, $version_cible) {
|
||||||
$maj = array();
|
$maj = array();
|
||||||
|
|
||||||
|
$maj['create'] = array(array('maj_tables', array('spip_messages')));
|
||||||
|
$maj['1.0.4'] = array(array('maj_tables', array('spip_messages')));
|
||||||
|
|
||||||
include_spip('base/upgrade');
|
include_spip('base/upgrade');
|
||||||
maj_plugin($nom_meta_base_version, $version_cible, $maj);
|
maj_plugin($nom_meta_base_version, $version_cible, $maj);
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,3 +12,53 @@
|
||||||
if (!defined('_ECRIRE_INC_VERSION')) {
|
if (!defined('_ECRIRE_INC_VERSION')) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$GLOBALS['gamucontact'] = [
|
||||||
|
[
|
||||||
|
'saisie' => 'input',
|
||||||
|
'options' => array(
|
||||||
|
'nom' => 'nom',
|
||||||
|
'label' => 'Votre Nom',
|
||||||
|
'obligatoire' => 'oui',
|
||||||
|
//'fonction' => 'ma_super_fonction'
|
||||||
|
)
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'saisie' => 'input',
|
||||||
|
'options' => array(
|
||||||
|
'nom' => 'email_contact',
|
||||||
|
'label' => 'Votre Email',
|
||||||
|
'obligatoire' => 'oui',
|
||||||
|
)
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'saisie' => 'input',
|
||||||
|
'options' => array(
|
||||||
|
'nom' => 'objet',
|
||||||
|
'label' => 'Objet',
|
||||||
|
'obligatoire' => 'oui',
|
||||||
|
//'fonction' => 'ma_super_fonction'
|
||||||
|
)
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'saisie' => 'textarea',
|
||||||
|
'options' => array(
|
||||||
|
'nom' => 'texte',
|
||||||
|
'label' => 'Message',
|
||||||
|
'obligatoire' => 'oui',
|
||||||
|
//'fonction' => 'ma_super_fonction'
|
||||||
|
)
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
function gamucontact_declarer_tables_objets_sql($tables) {
|
||||||
|
|
||||||
|
$tables['spip_messages']['field']['telephone'] = "varchar(55) NOT NULL";
|
||||||
|
$tables['spip_messages']['field']['nom'] = "varchar(255) NOT NULL";
|
||||||
|
$tables['spip_messages']['field']['objet'] = "varchar(255) NOT NULL";
|
||||||
|
$tables['spip_messages']['field']['email_contact'] = "varchar(255) NOT NULL";
|
||||||
|
|
||||||
|
return $tables;
|
||||||
|
}
|
||||||
|
|
25
modeles/gamucontact_message.html
Normal file
25
modeles/gamucontact_message.html
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width">
|
||||||
|
<title>#NOM_SITE_SPIP</title>
|
||||||
|
</head>
|
||||||
|
<body style="background-color:rgb(255, 255, 255)">
|
||||||
|
<div class="mail">
|
||||||
|
[<img src="(#LOGO_SITE_SPIP|image_reduire{200}|extraire_attribut{src}|url_absolue)" >]
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<h1>Formulaire de contact</h1>
|
||||||
|
<BOUCLE_message(MESSAGES){id_message}{tout}>
|
||||||
|
<div class="message">
|
||||||
|
[<strong>Nom : </strong> (#NOM)<br>]
|
||||||
|
[<strong>Email : </strong> (#EMAIL_CONTACT)<br>]
|
||||||
|
[<strong>Téléphone : </strong> (#TELEPHONE)]
|
||||||
|
[<hr><strong>objet : </strong>(#OBJET)<br>]
|
||||||
|
[<strong>message : </strong>(#TEXTE)<br>]
|
||||||
|
</div>
|
||||||
|
</BOUCLE_message>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
12
paquet.xml
12
paquet.xml
|
@ -1,25 +1,25 @@
|
||||||
<paquet
|
<paquet
|
||||||
prefix="gamucontact"
|
prefix="gamucontact"
|
||||||
categorie="communication"
|
categorie="communication"
|
||||||
version="1.0.0"
|
version="1.0.1"
|
||||||
etat="dev"
|
etat="dev"
|
||||||
compatibilite="[3.3.0-dev;3.3.*]"
|
compatibilite="[3.3.0-dev;3.3.*]"
|
||||||
logo=""
|
logo=""
|
||||||
documentation=""
|
documentation=""
|
||||||
schema="1.0.0"
|
schema="1.0.4"
|
||||||
>
|
>
|
||||||
<!--
|
|
||||||
Paquet généré le 2021-03-11 12:19:16
|
|
||||||
-->
|
|
||||||
|
|
||||||
<nom>Gamu Contact</nom>
|
<nom>Gamu Contact</nom>
|
||||||
|
|
||||||
|
|
||||||
<auteur lien='https://gamuza.fr'>tofulm</auteur>
|
<auteur lien='https://gamuza.fr'>tofulm</auteur>
|
||||||
|
|
||||||
<licence>GNU/GPL</licence>
|
<licence>GNU/GPL</licence>
|
||||||
|
<necessite nom="facteur" compatibilite="[4.1.0;[" />
|
||||||
|
|
||||||
|
|
||||||
<pipeline nom="autoriser" inclure="gamucontact_autorisations.php" />
|
<pipeline nom="autoriser" inclure="gamucontact_autorisations.php" />
|
||||||
|
|
||||||
|
<pipeline nom="declarer_tables_objets_sql" inclure="gamucontact_options.php" />
|
||||||
|
|
||||||
|
|
||||||
</paquet>
|
</paquet>
|
||||||
|
|
4
test.html
Normal file
4
test.html
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
#CACHE{0}
|
||||||
|
|
||||||
|
<INCLURE{fond=modeles/gamucontact_message,id_message=1}>
|
||||||
|
|
Loading…
Add table
Reference in a new issue