From e3c8f168b0a047ed2ee5403b0672c3d4e1bcb3e5 Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Tue, 1 Nov 2005 17:54:35 +0000 Subject: [PATCH] le formulaire d'inscription avait perdu son focus automatique, contenait du code mort et d'autres a l'agonie. Ca va mieux --- formulaires/formulaire_inscription.html | 46 ++++---- formulaires/inc-formulaire_inscription.php3 | 115 ++++++++++++-------- spip_inscription.php3 | 2 +- 3 files changed, 93 insertions(+), 70 deletions(-) diff --git a/formulaires/formulaire_inscription.html b/formulaires/formulaire_inscription.html index 7587d2d64f..d67bbe4be8 100644 --- a/formulaires/formulaire_inscription.html +++ b/formulaires/formulaire_inscription.html @@ -1,39 +1,37 @@ -<h3 class='spip'><:pass_vousinscrire:></h3> -[ +<h3 class='spip'><:pass_vousinscrire:></h3>[ (#ENV*{message}) ][ (#ENV*{message}|?{'',' '})[ (#ENV{mode}|=={forum}|?{' ',''}) <:pass_forum_bla:><br /><br /> ][ - (#ENV{mode}|=={redac}|?{' ',''}) - <:pass_espace_prive_bla:><br /><br /> -] -<div class='spip_serif'><:form_forum_indiquer_nom_email:> + (#ENV{mode}|=={redac}|?{' ',''})<:pass_espace_prive_bla:> +<br /><br /> +]<div class='spip_serif'><:form_forum_indiquer_nom_email:> <br /><br /> - <form id="inscription" method='post' action="[(#ENV{self})]"> - <fieldset class='spip_sanscadre'> - <legend><:form_forum_identifiants:></legend> - <label> - <:form_pet_votre_nom:> - <input type="text" class="forml" name="nom_inscription" value="" size="30" /> - </label> - <label> - <:form_pet_votre_email:> - <input type="text" class="forml" name="mail_inscription" value="" size="30" /> - </label> - </fieldset> - <div align="right"><input type="submit" class="spip_bouton" value="<:bouton_valider:>" /> +<form id="inscription" method='post' action="[(#ENV{self})]"> + <fieldset class='spip_sanscadre'> + <legend><:form_forum_identifiants:></legend> + <label> + <:form_pet_votre_nom:> + <input type="text" class="forml" name="nom_inscription" value="" size="30" /> + </label> + <label> + <:form_pet_votre_email:> + <input type="text" class="forml" name="mail_inscription" value="" size="30" /> + </label> + </fieldset> + <div align="right"> + <input type="submit" class="spip_bouton" value="<:bouton_valider:>" /> </div> - </form>[ -</div> +</form> +</div>[ <script type="text/javascript"><!-- document.inscription.(#ENV{focus}).focus() ---></script> - ] +--></script>] ][<br /> <div align="right"> -(#ENV{target}|?{' ',''}) +(#ENV{focus}|?{' ',''}) <script type="text/javascript"><!-- document.write("<a href='") document.write((window.opener) ? "javascript:close()" : "./") diff --git a/formulaires/inc-formulaire_inscription.php3 b/formulaires/inc-formulaire_inscription.php3 index 72c3d3336e..5cfe277cb6 100644 --- a/formulaires/inc-formulaire_inscription.php3 +++ b/formulaires/inc-formulaire_inscription.php3 @@ -8,19 +8,25 @@ include_ecrire('inc_abstract_sql.php3'); global $balise_FORMULAIRE_INSCRIPTION_collecte ; $balise_FORMULAIRE_INSCRIPTION_collecte = array(); -// args[0] est le parametre 'focus' -- [(#FORMULAIRE_INSCRIPTION{focus})] +// args[0] indique le focus eventuel +// args[1] indique la rubrique eventuelle de proposition +// [(#FORMULAIRE_INSCRIPTION{nom_inscription, #ID_RUBRIQUE})] function balise_FORMULAIRE_INSCRIPTION_stat($args, $filtres) { if (lire_meta('accepter_inscriptions') != 'oui') return ''; else - return array('redac', ($args[0] == 'focus' ? 'nom_inscription' : '')); + return array('redac', $args[0], $args[1]); } -function balise_FORMULAIRE_INSCRIPTION_dyn($mode, $focus) { +// Si inscriptions pas autorisees, retourner une chaine d'avertissement +// Sinon inclusion du squelette +// Si pas de mon ou pas de mail valide, premier appel rien d'autre a faire +// Autrement 2e appel, envoyer un mail et le squelette ne produira pas de +// formulaire. + + +function balise_FORMULAIRE_INSCRIPTION_dyn($mode, $focus, $id_rubrique=0) { - // Si une inscription est autorisee, on enregistre le demandeur - // comme 'nouveau' et on lui envoie ses codes par email ; lors de - // sa premiere connexion il obtiendra son statut final (auth->activer()) if (!(($mode == 'redac' AND lire_meta('accepter_inscriptions') == 'oui') OR ($mode == 'forum' AND ( lire_meta('accepter_visiteurs') == 'oui' @@ -29,69 +35,82 @@ function balise_FORMULAIRE_INSCRIPTION_dyn($mode, $focus) { ))) return _T('pass_rien_a_faire_ici'); - if (!_request('nom_inscription')) + $nom = _request('nom_inscription'); + $mail = _request('mail_inscription'); + if (!$nom) $message = ''; - elseif (!test_mail_ins($mode, _request('mail_inscription'))) - $message = _T('info_email_invalide'); - else $message = message_inscription(_request('mail_inscription'), - _request('nom_inscription'), - false, - ($mode == 'forum') ? - 'form_forum_voici1' : - 'form_forum_voici2'); - + else { + $message = message_inscription($mail, $nom, false, $mode); + if (is_array($message)) { + if (function_exists('envoyer_inscription')) + $f = 'envoyer_inscription'; + else + $f = 'envoyer_inscription_dist'; + $message = $f($message, $nom, $mode, $id_rubrique); + } + } return array("formulaire_inscription", $GLOBALS['delais'], array('focus' => $focus, - 'target' => _request('target'), 'message' => $message, 'mode' => $mode, 'self' => $GLOBALS["clean_link"]->getUrl() )); } -// fonction qu'on peut redefinir pour filtrer selon l'adresse mail +// fonction qu'on peut redefinir pour filtrer les adresses mail // cas general: controler juste que l'adresse n'est pas vide et est valide -function test_mail_ins($mode, $mail) { +function test_inscription_dist($mode, $mail) { include_ecrire('inc_filtres.php3'); return email_valide($mail); } -// creer un nouvel utilisateur et lui envoyer un mail avec ses identifiants +// cree un nouvel utilisateur et renvoie un message d'impossibilite ou la +// ligne SQL le decrivant. +// On enregistre le demandeur comme 'nouveau' +// et on lui envoie ses codes par email ; lors de +// sa premiere connexion il obtiendra son statut final (auth->activer()) function message_inscription($mail_inscription, $nom_inscription, $force, $mode) { - $mail_inscription = email_valide(_request('mail_inscription')); - $s = spip_query("SELECT statut, id_auteur, login - FROM spip_auteurs WHERE email='".addslashes($mail_inscription)."'"); + if (function_exists('test_inscription')) + $f = 'test_inscription'; + else + $f = 'test_inscription_dist'; + if (!($mail_inscription = $f($mode, $mail_inscription))) + return _T('info_email_invalide'); + + $mail = addslashes($mail_inscription); + $s = spip_query("SELECT statut, id_auteur, login, email + FROM spip_auteurs WHERE email='". $mail ."'"); $row = spip_fetch_array($s); if (!$row) { // il n'existe pas, creer les identifiants - $login = test_login($nom_inscription, $mail_inscription); - $pass = creer_pass_pour_auteur(spip_abstract_insert('spip_auteurs', - '(nom, email, login, statut)', - "('". - addslashes($nom_inscription) . - "', '". - addslashes($mail_inscription) . - "', '" . - $login . - "', 'nouveau')")); - - return envoyer_inscription($mail_inscription, 'nouveau', $mode, $login, $pass, $nom_inscription); + $row['email'] = $mail_inscription; + $row['login'] = test_login($nom_inscription, $mail_inscription); + $row['id_auteur'] = spip_abstract_insert('spip_auteurs', + '(nom, email, login, statut)', + "('". + addslashes($nom_inscription) . + "', '". + $mail . + "', '" . + $row['login'] . + "', 'nouveau')"); + $row['pass'] = creer_pass_pour_auteur($row['id_auteur']); + return $row; } else { // existant mais encore muet, ou ressucite: renvoyer les infos if ((($row['statut'] == 'nouveau') && !$force) || - (($row['statut'] == '5poubelle') && $force)) { + (($row['statut'] == '5poubelle') && $force)) { // recreer le pass - $pass = creer_pass_pour_auteur($row['id_auteur']); - return envoyer_inscription($mail_inscription, $row['statut'], $mode, - $row['login'], $pass, $nom_inscription); + $row['pass'] = creer_pass_pour_auteur($row['id_auteur']); + return $row; } else { // irrecuperable if ($row['statut'] == '5poubelle') - return_T('form_forum_access_refuse'); + return _T('form_forum_access_refuse'); else // deja inscrit return _T('form_forum_email_deja_enregistre'); @@ -101,18 +120,24 @@ function message_inscription($mail_inscription, $nom_inscription, $force, $mode) // envoyer identifiants par mail -function envoyer_inscription($mail, $statut, $mode, $login, $pass, $nom) { +// fonction redefinissable + +function envoyer_inscription_dist($ids, $nom, $mode, $id_rubrique) { $nom_site_spip = lire_meta("nom_site"); $adresse_site = lire_meta("adresse_site"); $message = _T('form_forum_message_auto')."\n\n" . _T('form_forum_bonjour', array('nom'=>$nom))."\n\n" - . _T($mode, array('nom_site_spip' => $nom_site_spip, 'adresse_site' => $adresse_site)) . "\n\n" - . "- "._T('form_forum_login')." $login\n" - . "- "._T('form_forum_pass')." $pass\n\n"; + . _T((($mode == 'forum') ? + 'form_forum_voici1' : + 'form_forum_voici2'), + array('nom_site_spip' => $nom_site_spip, + 'adresse_site' => $adresse_site)) + . "\n\n- "._T('form_forum_login')." " . $ids['login'] + . "\n- ". _T('form_forum_pass'). " " . $ids['pass'] . "\n\n"; include_ecrire("inc_mail.php3"); - if (envoyer_mail($mail, + if (envoyer_mail($ids['email'], "[$nom_site_spip] "._T('form_forum_identifiants'), $message)) return _T('form_forum_identifiant_mail'); diff --git a/spip_inscription.php3 b/spip_inscription.php3 index 20e4eab424..6a8ff5a436 100644 --- a/spip_inscription.php3 +++ b/spip_inscription.php3 @@ -31,6 +31,6 @@ echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" '</title> <link rel="stylesheet" type="text/css" href="spip_style.css" /> </head><body>'; -inclure_balise_dynamique(balise_formulaire_inscription_dyn($mode, $mail_inscription, $nom_inscription, $focus, $target)); +inclure_balise_dynamique(balise_formulaire_inscription_dyn($mode, $focus)); echo "</body></html>"; ?> -- GitLab