From 8be2f259f7effb46a713259334f19f6833f43af9 Mon Sep 17 00:00:00 2001 From: "real3t@gmail.com" <> Date: Tue, 27 Oct 2015 15:34:09 +0000 Subject: [PATCH] =?UTF-8?q?Surcharge=20de=20l'inscription=20permettant=20d?= =?UTF-8?q?e=20choisir=20la=20ou=20les=20listes=20auxquelles=20on=20veut?= =?UTF-8?q?=20s'inscrire=20(=C3=A0=20am=C3=A9liorer)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitattributes | 2 + formulaires/newsletter_subscribe.html | 29 +++++++++ formulaires/newsletter_subscribe.php | 85 +++++++++++++++++++++++++++ 3 files changed, 116 insertions(+) create mode 100644 formulaires/newsletter_subscribe.html create mode 100644 formulaires/newsletter_subscribe.php diff --git a/.gitattributes b/.gitattributes index 614cba7b..defcc95d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -211,6 +211,8 @@ formulaires/inc-login_forum.html -text formulaires/inc-select-categories.html -text formulaires/inc/config_couleurs.html -text formulaires/inc/config_couleurs_fonctions.php -text +formulaires/newsletter_subscribe.html -text +formulaires/newsletter_subscribe.php -text formulaires/recherche.html -text /forum.html -text /identifiants.html -text diff --git a/formulaires/newsletter_subscribe.html b/formulaires/newsletter_subscribe.html new file mode 100644 index 00000000..8ef4d945 --- /dev/null +++ b/formulaires/newsletter_subscribe.html @@ -0,0 +1,29 @@ +<div class='formulaire_spip formulaire_newsletter formulaire_[(#FORM)] ajax'> + [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</p>] + [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>] + + [(#ENV{editable}) + <form method='post' action='#ENV{action}'><div> + #ACTION_FORMULAIRE{#ENV{action}} + <ul> + #SET{fl,mailsubscriber} + #SET{name,session_email}#SET{obli,'obligatoire'}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} + <li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]"> + <label for="#GET{name}"><:newsletter:label_email_subscribe:></label>[ + <span class='erreur_message'>(#GET{erreurs})</span> + ]<input type="email" name="#GET{name}" class="email text" value="#ENV*{#GET{name}}" id="#GET{name}" [(#HTML5|et{#GET{obli}})required='required']/> + </li> + #SET{name,listes}#SET{obli,'obligatoire'}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} + <li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]"> + <label>[(#GET{fl}|concat{':label_',#GET{name}}|_T)]</label>[ + <span class='erreur_message'>(#GET{erreurs})</span> + ] + <INCLURE{fond=formulaires/inc-check-subscribinglists,name=#GET{name},choix_listes=#ENV{_listes_dispo},status=open,env} /> + </li> + </ul> + [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ] + <!--extra--> + <p class="boutons"><input type="submit" class="submit" value="<:newsletter:bouton_subscribe|attribut_html:>" /></p> + </div></form> + ] +</div> diff --git a/formulaires/newsletter_subscribe.php b/formulaires/newsletter_subscribe.php new file mode 100644 index 00000000..fd802dcd --- /dev/null +++ b/formulaires/newsletter_subscribe.php @@ -0,0 +1,85 @@ +<?php +/** + * Plugin mailsubscribers + * (c) 2012 Cédric Morin + * Licence GNU/GPL v3 + */ + +if (!defined('_ECRIRE_INC_VERSION')) return; + +$GLOBALS['formulaires_no_spam'][] = 'newsletter_subscribe'; +include_spip('inc/mailsubscribers'); + + +/** + * Declarer les champs postes et y integrer les valeurs par defaut + */ +function formulaires_newsletter_subscribe_charger_dist($listes=''){ + $valeurs = array( + 'session_email' => '' + ); + + $valeurs['listes'] = explode(',',$listes); + $valeurs['_listes_dispo'] = mailsubscribers_listes(); + + if (isset($GLOBALS['visiteur_session']['email'])) + $valeurs['session_email'] = $GLOBALS['visiteur_session']['email']; + elseif (isset($GLOBALS['visiteur_session']['session_email'])) + $valeurs['session_email'] = $GLOBALS['visiteur_session']['session_email']; + return $valeurs; +} + +/** + * Verifier les champs postes et signaler d'eventuelles erreurs + */ +function formulaires_newsletter_subscribe_verifier_dist(){ + $listes = _request('listes'); + if ($listes AND is_array($listes)) + set_request('listes',implode(',',$listes)); + if (!$listes) + $listes = array(); + + $erreurs = array(); + if (!$email = _request('session_email')){ + $erreurs['session_email'] = _T('info_obligatoire'); + } + else { + // verifier que l'email est valide + if (!email_valide($email)) + $erreurs['session_email'] = _T('info_email_invalide'); + } + if (count($erreurs)) + set_request('listes',$listes); + return $erreurs; +} + +/** + * Traiter les champs postes + */ +function formulaires_newsletter_subscribe_traiter_dist(){ + + // langue par defaut lors de l'inscription : la langue courante dans la page + $options = array('lang'=>$GLOBALS['spip_lang']); + $email = _request('session_email'); + $listes = _request('listes'); + if ($listes AND is_string($listes)) + $listes = explode(',',$listes); + if ($listes AND is_array($listes) AND count($listes)) + $options['listes'] = $listes; + + $res = array( + 'editable'=>true + ); + + $newsletter_subscribe = charger_fonction("subscribe","newsletter"); + if ($newsletter_subscribe($email,$options)){ + if (lire_config('mailsubscribers/double_optin',0)) + $res['message_ok'] = _T('newsletter:subscribe_message_ok_confirm',array('email'=>"<b>$email</b>")); + else + $res['message_ok'] = _T('newsletter:subscribe_message_ok',array('email'=>"<b>$email</b>")); + } + else + $res['message_erreur'] = _T('mailsubscriber:erreur_technique_subscribe'); + set_request('email'); + return $res; +} -- GitLab