Valider 58ed7e20 rédigé par esj's avatar esj
Parcourir les fichiers

Extension du filtre '''parametre_url''': il est à présent possible de donner...

Extension du filtre '''parametre_url''': il est à présent possible de donner une liste de paramètres plutôt qu'un unique paramètre, ce qui évite d'écrire une succession d'appels à ce filtre lorsque l'on veut appliquer le même traitement à ces paramètres (en pratique c'est surtout la suppression). La syntaxe retenue est de les séparer par une barre '''|''', et ne rien mettre autour. Ainsi:
{{{
[(#SELF|parametre_url{"tri_n|_tri|_tri_n",""})]
}}}
élimine trois paramètres de l'URL courante s'ils s'y trouvent.

Application aux squelettes dynamiques introduits en [10645]. Ceux ci ont de plus un lien vers le squelette produit, sous la forme d'un appel au débusqueur avec les paramètres idoines (pour ne pas effrayer les débutants avec la page d'accueil du débusqueur).
parent dd66ec5b
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+11 −7
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -415,28 +415,32 @@ function parametre_url($url, $c, $v=NULL, $sep='&') {
	$a = array_shift($url);
	if (!$a) $a= './';

	$regexp = ',^(' . $c . ')(=.*)?$,';
	$ajouts = array_flip(explode('|',$c));
	$u = rawurlencode($v);
	// lire les variables et agir
	foreach ($url as $n => $val) {
		if (preg_match(',^'.preg_quote($c,',').'(=.*)?$,', urldecode($val), $r)) {
		if (preg_match($regexp, urldecode($val), $r)) {
			if ($v === NULL) {
				return $r[1]?substr($r[1],1):''; 
				return $r[2]?substr($r[2],1):''; 
			}
			elseif (!$v) {// suppression
				unset($url[$n]);
			} else {
				$url[$n] = $c.'='.rawurlencode($v);
				$v = '';
				$url[$n] = $r[1].'='.$u;
				unset($ajouts[$r[1]]);
			}
		}
	}

	// ajouter notre parametre si on ne l'a pas encore trouve
	// traiter les parametres pas encore trouves
	if ($v === NULL
	AND $args = func_get_args()
	AND count($args)==2)
		return $v;
	elseif ($v)
		$url[] = $c.'='.rawurlencode($v);
	elseif ($v) {
		foreach($ajouts as $k => $n) $url[] = $k .'=' . $u;
	} 

	// eliminer les vides
	$url = array_filter($url);
+30 −25
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -399,8 +399,8 @@ function debug_dumpfile ($texte, $fonc, $type) {
	ob_end_clean();
	$self = str_replace("\\'", ''', self());
	$self = parametre_url($self,'var_mode', 'debug');

	echo debug_debut($fonc);

	if ($var_mode_affiche !== 'validation') {
		$self = parametre_url($self,'var_mode', 'debug');
	  foreach ($debug_objets['sourcefile'] as $nom_skel => $sourcefile) {
@@ -452,31 +452,8 @@ function debug_dumpfile ($texte, $fonc, $type) {
		echo "</fieldset>\n";
	  }
	  echo "</div>\n<a id='$fonc'></a>\n"; 
	  if ($var_mode_objet && ($res = $debug_objets[$var_mode_affiche][$var_mode_objet])) {
	    echo "<div id=\"debug_boucle\"><fieldset>";
	    if ($var_mode_affiche == 'resultat') {
		echo "<legend>",$debug_objets['pretty'][$var_mode_objet],"</legend>";
		$req = $debug_objets['requete'][$var_mode_objet];
		if (function_exists('traite_query'))
		  $req = traite_query($req);
		echo ancre_texte($req);
		foreach ($res as $view) 
			if ($view) echo "\n<br /><fieldset>",interdire_scripts($view),"</fieldset>";

	    } else if ($var_mode_affiche == 'code') {
		echo  "<legend>",$debug_objets['pretty'][$var_mode_objet],"</legend>";
		echo ancre_texte("<"."?php\n".$res."\n?".">");
	    } else if ($var_mode_affiche == 'boucle') {
		echo  "<legend>",$debug_objets['pretty'][$var_mode_objet],"</legend>";
		echo ancre_texte($res);
	    } else if ($var_mode_affiche == 'squelette') {
		echo  "<legend>",$debug_objets['sourcefile'][$var_mode_objet],"</legend>";
		echo ancre_texte($debug_objets['squelette'][$var_mode_objet]);
	    }
	    echo "</fieldset></div>";
	  }
	  echo debug_affiche($fonc, $debug_objets, $var_mode_objet, $var_mode_affiche);
	}

	if ($texte) {

		$err = "";
@@ -507,6 +484,34 @@ function debug_dumpfile ($texte, $fonc, $type) {
	exit;
}

function debug_affiche($fonc, $tout, $objet, $affiche)
{
	if (!$objet) {if ($affiche == 'squelette') $objet = $fonc;}
	if (!$objet OR !$res = $tout[$affiche][$objet]) return;
	$res = "<div id=\"debug_boucle\"><fieldset>";
	if ($affiche == 'resultat') {
		$res .= "<legend>" .$tout['pretty'][$objet] ."</legend>";
		$req = $tout['requete'][$objet];
		if (function_exists('traite_query'))
			$req = traite_query($req);
		$res .= ancre_texte($req);
		foreach ($res as $view) 
			if ($view) $res .= "\n<br /><fieldset>" .interdire_scripts($view) ."</fieldset>";

	} else if ($affiche == 'code') {
		$res .=  "<legend>" .$tout['pretty'][$objet] ."</legend>";
		$res .= ancre_texte("<"."?php\n".$res."\n?".">");
	} else if ($affiche == 'boucle') {
		$res .=  "<legend>" .$tout['pretty'][$objet] ."</legend>";
		$res .= ancre_texte($res);
	} else if ($affiche == 'squelette') {
		$res .=  "<legend>" .$tout['sourcefile'][$objet] ."</legend>";
		$res .= ancre_texte($tout['squelette'][$objet]);
	}
	$res .= "</fieldset></div>";
	return $res;
}

// http://doc.spip.org/@debug_debut
function debug_debut($titre)
{
+1 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -30,7 +30,7 @@ function public_styliser_dist($fond, $id_rubrique, $lang='', $connect='', $ext='
		AND $table = $trouver_table($fond, $connect)) {
				$base = _DIR_TMP . $fond . ".$ext";
				if (!file_exists($base)
				OR  $GLOBALS['var_mode'] == 'recalcul') {
				OR  $GLOBALS['var_mode']) {
					$vertebrer = charger_fonction('vertebrer', 'public');
					$f = fopen($base, 'w');
					fwrite($f, $vertebrer($table));
+19 −12
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -33,13 +33,14 @@ function vertebrer_sort($fields, $direction)
	foreach($fields as $n => $t) {
		$tri = $direction
		. ((test_sql_int($t) OR test_sql_date($r)) ? 'tri_n' : 'tri');
		$args ="";
		$url ="";
		foreach (array('tri', 'tri_n', '_tri', '_tri_n') as $c) {
		  if ($tri != $c) $args .= '|parametre_url{' . $c .',""}';
			if ($tri != $c) $url .= "|$c";
		}
      // #SELF contient tous les parametes *tri*. A ameliorer
		$url = "[(#SELF$args|parametre_url{" . $tri . ",'" . $n . "'})]";
		$res .= "\n\t\t<th><a href='$url'>$n</a></th>";
		$url = "|parametre_url{" . $tri . ",'" . $n . "'}"
		. '|parametre_url{"' . substr($url,1) .'",""}';

		$res .= "\n\t\t<th><a href='[(#SELF$url)]'>$n</a></th>";
	}
	return $res;
}
@@ -96,18 +97,24 @@ function public_vertebrer_dist($desc)
<h1 style='text-align:center'>SPIPAdmin $surnom</h1><br />\n" .
	  // au minimum: "<BOUCLE1($fond)></BOUCLE1>#TOTAL_BOUCLE<//B1>")
	  // au maximum:
	"<B1>#ANCRE_PAGINATION[<p class='pagination'>(#PAGINATION)</p>]" .
	"<table class='spip' border='1' width='90%'>" .
	"<tr>\n\t<th>Nb</th>" .
	"<B1>#ANCRE_PAGINATION" .
	"\n<p class='pagination'>" .
	"\n<a style='float:left;' " .
	"href='./?page=$surnom&amp;var_mode=debug&amp;var_mode_affiche=squelette#debug_boucle'>squelette" .
	"</a>" .
	"\n#PAGINATION" .
	"\n</p>\n<table class='spip' border='1' width='90%'>" .
	"\n\t<tr>\n\t\t<th>Nb</th>" .
	vertebrer_sort($field,'') .
	"\n</tr>\n<BOUCLE1($surnom)" .
	"\n\t</tr>\n<BOUCLE1($surnom)" .
	vertebrer_crit($field) .
	'>' .
	vertebrer_cell($field) .
	"\n\t</tr>\n</BOUCLE1>" .
	"\n\t<tr>\n\t<th>Nb</th>" .
	"\n\t<tr>\n\t\t<th>Nb</th>" .
	vertebrer_sort($field,'_') .
	"\n</tr></table>" .
"</B1><h2 style='text-align:center'><:texte_vide:></h2><//B1></div></body></html>";
	"\n\t</tr>\n</table>" .
"\n</B1>\n<h2 style='text-align:center'><:texte_vide:></h2>" .
"\n<//B1></div></body></html>";
}
?>