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

Suite de [14048]: afficher le debusqueur même si l'erreur est dès le phraseur,...

Suite de [14048]: afficher le debusqueur même si l'erreur est dès le phraseur, ça fournit le lien vers le squelette fautif (à terme il faudrait atterrir sur la ligne fautive). Envoyer le 503 dans tous les cas où il agit, et éviter le position:absolute quand on est sûr qu'on a entièrement la main dans l'affichage.
parent cce67f26
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+3 −2
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -845,6 +845,8 @@ function public_compiler_dist($squelette, $nom, $gram, $sourcefile, $connect='')
			'sourcefile' => $sourcefile,
			'squelette' => transcoder_page($squelette));

	if (isset($GLOBALS['var_mode']) AND $GLOBALS['var_mode'] == 'debug')
		squelette_debug_compile($nom, $sourcefile, $descr['squelette']);
	// Phraser le squelette, selon sa grammaire
	// pour le moment: "html" seul connu (HTML+balises BOUCLE)
	$boucles = array();
@@ -855,6 +857,7 @@ function public_compiler_dist($squelette, $nom, $gram, $sourcefile, $connect='')
	$squelette = $f($descr['squelette'], '', $boucles, $nom);
	$descr['documents'] = compile_inclure_doublons($squelette);


	// Demander la description des tables une fois pour toutes
	// et reperer si les doublons sont demandes
	// pour un inclure ou une boucle document
@@ -1027,8 +1030,6 @@ function " . $nom . '($Cache, $Pile, $doublons=array(), $Numrows=array(), $SP=0)

?".">";

	if (isset($GLOBALS['var_mode']) AND $GLOBALS['var_mode'] == 'debug')
		squelette_debug_compile($nom, $sourcefile, $code, $descr['squelette']);
	return $code;

}
+65 −64
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -61,7 +61,7 @@ function affiche_erreurs_page($tableau_des_erreurs, $message='') {
		$i++;
	}
	$cols = 1+count($err);
	$style = _DIR_RESTREINT ? " position: absolute; top: 90px; left: 10px; width: 200px; z-index: 1000; filter:alpha(opacity=95); -moz-opacity:0.9; opacity: 0.95;" : '';
	$style = (_DIR_RESTREINT AND headers_sent()) ? " position: absolute; top: 90px; left: 10px; width: 200px; z-index: 1000; filter:alpha(opacity=95); -moz-opacity:0.9; opacity: 0.95;" : '';

	return "\n<table id='spip-debug' cellpadding='2'  border='1'
	style='text-align: left;$style'><tr><th style='text-align: center' colspan='$cols'>"
@@ -217,22 +217,7 @@ function erreur_squelette($message='', $lieu='') {
	$tableau_des_erreurs[] = array($message, $lieu);
	// Eviter les boucles infernales
	if (count($tableau_des_erreurs) > _DEBUG_MAX_SQUELETTE_ERREURS AND _DEBUG_MAX_SQUELETTE_ERREURS) {
		include_spip('inc/minipres');
		if (!headers_sent()) http_status(503);
		if ($_COOKIE['spip_admin'] OR
		($GLOBALS['var_mode'] == 'debug')) {

			$titre = 'SPIP '
				. $GLOBALS['spip_version_affichee']
				. ' '
				. _T('admin_debug')
				. ' '
				. supprimer_tags(extraire_multi($GLOBALS['meta']['nom_site']));

			echo minipres($titre, affiche_erreurs_page($tableau_des_erreurs));
		}
		spip_log("je sors du debug, squelette " . $GLOBALS['fond']);
		exit;
		debug_dumpfile('','','', affiche_erreurs_page($tableau_des_erreurs));
	}
}

@@ -285,7 +270,7 @@ function boucle_debug_compile ($id, $nom, $code) {

// appelee a chaque compilation de squelette (compilo.php)
// http://doc.spip.org/@squelette_debug_compile
function squelette_debug_compile($nom, $sourcefile, $code, $squelette) {
function squelette_debug_compile($nom, $sourcefile, $squelette) {
	global $debug_objets;

	$debug_objets['squelette'][$nom] = $squelette;
@@ -456,14 +441,16 @@ function ancre_texte($texte, $fautifs=array(), $nocpt=false)
}

// l'environnement graphique du debuggueur 
// fin de course pour unhappy-few.
// http://doc.spip.org/@debug_dumpfile
function debug_dumpfile ($texte, $fonc, $type) {
function debug_dumpfile ($texte, $fonc, $type, $corps='') {
	global $debug_objets, $spip_lang_right;
	$var_mode_objet = _request('var_mode_objet');
	$var_mode_affiche = _request('var_mode_affiche');

	$debug_objets[$type][$fonc . 'tout'] = $texte;
	if (autoriser('debug')) {

		$debug_objets[$type][$fonc . 'tout'] = $texte;
		if (!$debug_objets['sourcefile']) return;
		if ($texte && ($var_mode_objet != $fonc || $var_mode_affiche != $type))
			return;
@@ -475,40 +462,10 @@ function debug_dumpfile ($texte, $fonc, $type) {
		if (ob_get_length()) ob_end_clean();
		$self = str_replace("\\'", '&#39;', self());
		$self = parametre_url($self,'var_mode', 'debug');
	echo debug_debut($fonc);
		echo debug_debut($fonc, $corps);

		if ($var_mode_affiche !== 'validation') {
	  foreach ($debug_objets['sourcefile'] as $nom_skel => $sourcefile) {
		$self2 = parametre_url($self,'var_mode_objet', $nom_skel);
		echo "<fieldset><legend>",$sourcefile,"&nbsp;: ";
		echo "\n<a href='$self2&amp;var_mode_affiche=squelette#$nom_skel'>"._T('squelette')."</a>";
		echo "\n<a href='$self2&amp;var_mode_affiche=resultat#$nom_skel'>"._T('zbug_resultat')."</a>";
		echo "\n<a href='$self2&amp;var_mode_affiche=code#$nom_skel'>"._T('zbug_code')."</a>";
		echo "\n<a href='", 
		  str_replace('var_mode=','var_profile=', $self), "'>",
		  _T('zbug_calcul')."</a></legend>";
		echo "\n<span style='display:block;float:$spip_lang_right'>"._T('zbug_profile',array('time'=>isset($debug_objets['profile'][$sourcefile])?$debug_objets['profile'][$sourcefile]:0))."</span>";

		if (is_array($contexte = $debug_objets['contexte'][$sourcefile]))
			echo afficher_debug_contexte($contexte);

		$i = 0;
		$res = "";
		if (isset($debug_objets['pretty']) AND is_array($debug_objets['pretty']))
		  foreach ($debug_objets['pretty'] as $nom => $pretty)
			if (substr($nom, 0, strlen($nom_skel)) == $nom_skel) {
				$i++;
				$aff = "&lt;".$pretty."&gt;";
				if ($var_mode_objet == $nom)
					$aff = "<b>$aff</b>";
				$color = $i%2 ? '#e0e0f0' : '#f8f8ff';
				$res .= debug_affiche_navig($aff, $nom_skel, $color, $self .  "&amp;var_mode_objet=" .  $nom, $i);
			}
		if ($res) echo "<table width='100%'>\n",$res,"</table>\n";
		echo "</fieldset>\n";
	  }
	  echo "</div>\n<a id='$fonc'></a>\n"; 
	  echo debug_affiche($fonc, $debug_objets, $var_mode_objet, $var_mode_affiche);
			affiche_debug_validation($fonc, $self);
		}
		if ($texte) {
			$err = "";
@@ -538,9 +495,48 @@ function debug_dumpfile ($texte, $fonc, $type) {
			echo "</fieldset></div>";
		}
		debug_fin();
	}
	exit;
}

function affiche_debug_validation($fonc, $self)
{
	global $debug_objets, $spip_lang_right;
	$var_mode_objet = _request('var_mode_objet');
	$var_mode_affiche = _request('var_mode_affiche');

	foreach ($debug_objets['sourcefile'] as $nom_skel => $sourcefile) {
		$self2 = parametre_url($self,'var_mode_objet', $nom_skel);
		echo "<fieldset><legend>",$sourcefile,"&nbsp;: ";
		echo "\n<a href='$self2&amp;var_mode_affiche=squelette#$nom_skel'>"._T('squelette')."</a>";
		echo "\n<a href='$self2&amp;var_mode_affiche=resultat#$nom_skel'>"._T('zbug_resultat')."</a>";
		echo "\n<a href='$self2&amp;var_mode_affiche=code#$nom_skel'>"._T('zbug_code')."</a>";
		echo "\n<a href='", 
		  str_replace('var_mode=','var_profile=', $self), "'>",
		  _T('zbug_calcul')."</a></legend>";
		echo "\n<span style='display:block;float:$spip_lang_right'>"._T('zbug_profile',array('time'=>isset($debug_objets['profile'][$sourcefile])?$debug_objets['profile'][$sourcefile]:0))."</span>";

		if (is_array($contexte = $debug_objets['contexte'][$sourcefile]))
			echo afficher_debug_contexte($contexte);

		$i = 0;
		$res = "";
		if (isset($debug_objets['pretty']) AND is_array($debug_objets['pretty']))
		  foreach ($debug_objets['pretty'] as $nom => $pretty)
			if (substr($nom, 0, strlen($nom_skel)) == $nom_skel) {
				$i++;
				$aff = "&lt;".$pretty."&gt;";
				if ($var_mode_objet == $nom)
					$aff = "<b>$aff</b>";
				$color = $i%2 ? '#e0e0f0' : '#f8f8ff';
				$res .= debug_affiche_navig($aff, $nom_skel, $color, $self .  "&amp;var_mode_objet=" .  $nom, $i);
			}
		if ($res) echo "<table width='100%'>\n",$res,"</table>\n";
		echo "</fieldset>\n";
	  }
	  echo "</div>\n<a id='$fonc'></a>\n"; 
	  echo debug_affiche($fonc, $debug_objets, $var_mode_objet, $var_mode_affiche);
}
// http://doc.spip.org/@debug_affiche_navig
function debug_affiche_navig($aff, $nom_skel, $color, $self, $i)
{
@@ -625,12 +621,15 @@ function debug_affiche($fonc, $tout, $objet, $affiche)
}

// http://doc.spip.org/@debug_debut
function debug_debut($titre)
function debug_debut($titre, $erreurs='')
{
	global $visiteur_session;
	include_spip('inc/headers');
	include_spip('inc/filtres');
	if (!headers_sent()) {
		http_status(503);
		http_no_cache();
	}
	lang_select($visiteur_session['lang']);
	return _DOCTYPE_ECRIRE .
	  html_lang_attributes() .
@@ -646,7 +645,9 @@ function debug_debut($titre)
	  . "<link rel='stylesheet' href='".url_absolue(find_in_path('spip_admin.css'))
	  . "' type='text/css' />" .
	  "</head>\n<body style='margin:0 10px;'>" .
	  "\n<div id='spip-debug' style='position: absolute; top: 22px; z-index: 1000;height:97%;left:10px;right:10px;'><div id='spip-boucles'>\n"; 
	  "\n<div id='spip-debug' style='position: absolute; top: 22px; z-index: 1000;height:97%;left:10px;right:10px;'>" .
	  $erreurs .
	  "<div id='spip-boucles'>\n"; 
}

// http://doc.spip.org/@debug_fin