From 9f36b83a4d178da96d2eee1d3eb63301f88e1289 Mon Sep 17 00:00:00 2001
From: Cerdic <cedric@yterium.com>
Date: Tue, 12 Feb 2008 15:54:52 +0000
Subject: [PATCH] l'action de de demander son mot de passe doit etre attachee
 au formulaire de login et non a la page de login. Cela oblige sinon a forker
 le formulaire des que l'on veut l'utiliser la page de resaisie d'un mot de
 passe passe en squelette, avec creation de la balise #FORMULAIRE_OUBLI
 utilisable independamment et un hack qui de ce fait disparait dans
 generer_url_public

---
 .gitattributes                                |  1 +
 dist/formulaires/login.html                   |  4 +-
 dist/formulaires/oubli.html                   |  8 +---
 dist/login.html                               |  1 -
 dist/spip_pass.html                           | 40 +++++++++++++++++++
 .../pass.php => balise/formulaire_oubli.php}  | 32 ++++++---------
 ecrire/inc/utils.php                          |  6 ---
 7 files changed, 58 insertions(+), 34 deletions(-)
 create mode 100644 dist/spip_pass.html
 rename ecrire/{action/pass.php => balise/formulaire_oubli.php} (83%)

diff --git a/.gitattributes b/.gitattributes
index 0fa05d3edb..6dfe355508 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -292,6 +292,7 @@ dist/puce_prive_rtl.gif -text
 dist/puce_rtl.gif -text
 dist/rechercher.png -text
 dist/spip.png -text
+dist/spip_pass.html -text
 dist/spip_style.css -text
 dist/style_prive.html -text
 dist/style_prive_defaut.css -text
diff --git a/dist/formulaires/login.html b/dist/formulaires/login.html
index a62969ff3a..3682a7b48f 100644
--- a/dist/formulaires/login.html
+++ b/dist/formulaires/login.html
@@ -56,7 +56,9 @@ if (l=document.getElementById('login_securise'))	l.style.display='';
 ]
 	[(#ENV{login}|?{'',' '})<div id='pass_ajax' style='display: none;'>]
 	<p><label[ for="var_login_(#ENV{login})"]><:login_pass2:></label><br />
-	<input type="password" class="forml" name="session_password"[ id="var_login_(#ENV{login})"] value="" size="20" /></p>
+	<input type="password" class="forml" name="session_password"[ id="var_login_(#ENV{login})"] value="" size="20" /><br />
+	&#91;<a href="#URL_PAGE{spip_pass}" target="spip_pass" onclick="javascript:window.open(this.href, 'spip_pass', 'scrollbars=yes, resizable=yes, width=480, height=330'); return false;"><:login_motpasseoublie:></a>&#93;
+	</p>
 
 [(#ENV{rester_connecte})
 	<p><input type="checkbox" name="session_remember" id="session_remember[_(#ENV{login})]" value="oui"[(#ENV*{prefs}|filtre_rester_connecte)checked="checked"]
diff --git a/dist/formulaires/oubli.html b/dist/formulaires/oubli.html
index 8541c50e13..8ee48299af 100644
--- a/dist/formulaires/oubli.html
+++ b/dist/formulaires/oubli.html
@@ -4,6 +4,7 @@
 (#ENV*{message}|?{'',' '})
 
 <form id="oubli_form" action="[(#ENV{action})]" method="post">
+	[(#ENV{action}|form_hidden)]
 	<fieldset>
 	<legend><:pass_nouveau_pass:></legend>[
 	<input type="hidden" name="p" value="(#ENV{p})" />
@@ -21,17 +22,10 @@
 ]
 </div>
 
-<div align="#LANG_RIGHT">
 <script type="text/javascript"><!--
 [
 (#ENV*{message}|?{'',' '})
 document.getElementById('oubli').focus()
 ]
-document.write("<a style='color: #e86519' href='")
-document.write((window.opener) ? "javascript:close()" : "./")
-document.write("'><:pass_quitter_fenetre:><" + "/a>");
 //--></script>
-<noscript>
-	&#91;<a href='./'><:pass_retour_public:></a>&#93;
-</noscript>
 </div>
\ No newline at end of file
diff --git a/dist/login.html b/dist/login.html
index be67f0b3ed..0fdba6c684 100644
--- a/dist/login.html
+++ b/dist/login.html
@@ -54,7 +54,6 @@
 		#LOGIN_PRIVE
 		<p class="retour">
 		[&#91;<a href="#URL_PAGE{identifiants,focus=nom_inscription}&amp;mode=(#URL_SITE_SPIP|tester_config{1comite})" target="spip_pass" onclick="javascript:window.open(this.href, 'spip_pass', 'scrollbars=yes, resizable=yes, width=480, height=400'); return false;"><:login_sinscrire:></a>&#93;]
-		&#91;<a href="#URL_PAGE{spip_pass}" target="spip_pass" onclick="javascript:window.open(this.href, 'spip_pass', 'scrollbars=yes, resizable=yes, width=480, height=330'); return false;"><:login_motpasseoublie:></a>&#93;
 		&#91;<a href="#URL_SITE_SPIP/"><:login_retoursitepublic:></a>&#93;
 		</p>
 	</div>
diff --git a/dist/spip_pass.html b/dist/spip_pass.html
new file mode 100644
index 0000000000..ce2c8ec09a
--- /dev/null
+++ b/dist/spip_pass.html
@@ -0,0 +1,40 @@
+[(#REM)
+	Eviter les boutons d'admin sur la page d'oubli
+]
+#HTTP_HEADER{Content-Type: text/html; charset=#CHARSET}
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="#LANG" lang="#LANG" dir="#LANG_DIR">
+<head>
+<title><:pass_mot_oublie:> - [(#NOM_SITE_SPIP|textebrut)]</title>
+<meta http-equiv="Content-Type" content="text/html; charset=#CHARSET" />
+<meta name="robots" content="none" />
+<meta name="generator" content="SPIP[ (#SPIP_VERSION)]" />
+[<link rel="shortcut icon" href="(#CHEMIN{favicon.ico})" />]
+<link rel="stylesheet" href="[(#CHEMIN{spip_style.css}|direction_css)]" type="text/css" />
+<link rel="stylesheet" href="[(#CHEMIN{minipres.css}|direction_css)]" type="text/css" />
+
+</head>
+<body class='pass' >
+
+<div id='minipres'>
+
+	<h3 class="spip">#NOM_SITE_SPIP</h3>
+		
+	<div class="formulaire_spip pass">
+		#FORMULAIRE_OUBLI
+	</div>
+	<div style='text-align:#LANG_RIGHT'>
+	<script type="text/javascript"><!--
+	document.write("<a style='color: #e86519' href='")
+	document.write((window.opener) ? "javascript:close()" : "./")
+	document.write("'><:pass_quitter_fenetre:><" + "/a>");
+	//--></script>
+	<noscript>
+		&#91;<a href='./'><:pass_retour_public:></a>&#93;
+	</noscript>
+	</div>
+	
+</div><!--#minipres-->
+
+</body>
+</html>
\ No newline at end of file
diff --git a/ecrire/action/pass.php b/ecrire/balise/formulaire_oubli.php
similarity index 83%
rename from ecrire/action/pass.php
rename to ecrire/balise/formulaire_oubli.php
index 68bd32bea2..e27c5b814c 100644
--- a/ecrire/action/pass.php
+++ b/ecrire/balise/formulaire_oubli.php
@@ -12,14 +12,8 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
-include_spip('inc/minipres'); # charge lang et execute utiliser_lang
-include_spip('inc/acces'); # pour generer_htpass
-include_spip('public/assembler'); # pour calculer la page
 include_spip('inc/filtres'); # pour email_valide()
 
-// Ce fichier est celui d'une balise dynamique qui s'ignore.
-
-
 // fonction qu'on peut redefinir pour filtrer les adresses mail 
 
 // http://doc.spip.org/@test_oubli
@@ -68,11 +62,19 @@ function message_oubli($email, $param)
 	  return  _T('pass_erreur_probleme_technique');
 }
 
+function balise_FORMULAIRE_OUBLI ($p) {
+  return calculer_balise_dynamique($p,'FORMULAIRE_OUBLI',array());
+}
 
-// http://doc.spip.org/@formulaire_oubli_dyn
-function formulaire_oubli_dyn($p, $oubli)
-{
+function balise_FORMULAIRE_OUBLI_stat($args, $filtres) {
 
+	return $args;
+}
+
+function balise_FORMULAIRE_OUBLI_dyn()
+{
+$p = _request('p');
+$oubli = _request('oubli');
 $message = '';
 
 // au 3e appel la variable P est positionnee et oubli = mot passe.
@@ -100,15 +102,7 @@ $message = '';
  return array('formulaires/oubli', 0, 
 	      array('p' => $p,
 		    'message' => $message,
-		    'action' => generer_url_action('pass')));
+		    'action' => self()));
 }
 
-// http://doc.spip.org/@action_pass_dist
-function action_pass_dist()
-{
-	utiliser_langue_visiteur();
-	echo install_debut_html(_T('pass_mot_oublie'), " class='pass'");
-	inclure_balise_dynamique(formulaire_oubli_dyn(_request('p'), _request('oubli')));
-	echo install_fin_html();
-}
-?>
+?>
\ No newline at end of file
diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php
index ec39f58513..3d86013a5a 100644
--- a/ecrire/inc/utils.php
+++ b/ecrire/inc/utils.php
@@ -817,12 +817,6 @@ function get_spip_script($default='') {
 function generer_url_public($script='', $args="", $no_entities=false, $rel=false) {
 	// si le script est une action (spip_pass, spip_inscription),
 	// standardiser vers la nouvelle API
-  	// [hack temporaire pour faire fonctionner #URL_PAGE{spip_pass} ]
-
-	if (preg_match(',^spip_(.*),', $script, $regs)) {
-		$args = "action=" . $regs[1]  .($args ? "&$args" :'');
-		$script = "";
-	}
 
 	$action = get_spip_script();
 	if ($script)
-- 
GitLab