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

Possibilité d'appliquer l'indenteur XML sur les scripts de l'espace privé....

Possibilité d'appliquer l'indenteur XML sur les scripts de l'espace privé. Quant cette option est en action et qu'on est admin, une page non conforme XML prise en charge par débusqueur qui affiche le code HTML en numérotant les lignes, et emet le message d'erreur avec un lien vers la ligne fautive.

Cette option est déclenchée par la globale xml_indent, en attendant de tirer
au clair l'usage de la globale xhtml dans la fonction _T.
parent c7351155
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+6 −6
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -204,13 +204,13 @@ if ($id_rubrique>0 AND $GLOBALS['meta']['multi_rubriques'] == 'oui' AND ($GLOBAL
		$langue_rubrique = $langue_parent;

	debut_cadre_enfonce('langues-24.gif');
	echo "<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=3 WIDTH=100% BACKGROUND=''><TR><TD BGCOLOR='#EEEECC' class='serif2'>";
	echo "<table border='0' cellspacing='0' cellpadding='3' width='100%' background=''><tr><td bgcolor='#eeeecc' class='serif2'>";
	echo bouton_block_invisible('languesrubrique');
	echo "<B>";
	echo "<b>";
	echo _T('titre_langue_rubrique');
	echo "&nbsp; (".traduire_nom_langue($langue_rubrique).")";
	echo "</B>";
	echo "</TD></TR></TABLE>";
	echo "</b>";
	echo "</td></tr></table>";

	echo debut_block_invisible('languesrubrique');
	echo "<div class='verdana2' align='center'>";
@@ -237,7 +237,7 @@ echo afficher_enfant_rub($id_rubrique, $flag_editable, false);
//////////  Vos articles en cours de redaction
/////////////////////////

echo "<P>";
echo "<p />";

//
// Verifier les boucles a mettre en relief
@@ -407,7 +407,7 @@ function montre_naviguer($id_rubrique, $titre, $descriptif, $logo, $flag_editabl
{
  global $spip_lang_right, $spip_lang_left;

  echo "\n<table cellpadding=0 cellspacing=0 border=0 width='100%'>";
  echo "\n<table cellpadding='0' cellspacing='0' border='0' width='100%'>";
  echo "<tr width='100%'><td width='100%' valign='top'>";
  gros_titre((!acces_restreint_rubrique($id_rubrique) ? '' :
		http_img_pack("admin-12.gif",'', "width='12' height='12'",
+28 −13
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -45,7 +45,7 @@ function debutElement($parser, $name, $attrs)
	$delim = strpos($v, "'") === false ? "'" : '"';
	$val = $phraseur_xml->translate_entities($v);
	$att .= $sep .  $k . "=" . $delim
	  . ($delim == '"' ? str_replace('"',  '&quot;', $val) : $val)
	  . ($delim !== '"' ? str_replace('&quot;', '"', $val) : $val)
	  . $delim;
	$sep = "\n $depth";
    }
@@ -71,8 +71,10 @@ function finElement($parser, $name)
  $t = $contenu[$depth];
  $depth = substr($depth, 2);
  $t = ereg_replace("[\n\t ]+$", "\n" . $depth, $t);
  // fusion <balise></balise> en <balise /> sauf pour qq unes qui hallucinent
  if ($t || ($name == 'a') || ($name == 'textarea'))
  // fusion <balise></balise> en <balise />
  // ATTENTION, ne pas le faire s'il y a des attributs
  // ca trompe completement les clients http
  if ($t || ($ouv !=$name))
    $res .= ($ouv ? ('<' . $ouv . '>') : '') . $t . "</" . $name . ">";
  else
    $res .= ($ouv ? ('<' . $ouv  . ' />') : ("</" .  $name . ">"));
@@ -84,7 +86,9 @@ function textElement($parser, $data)
  global $phraseur_xml;
  $depth = &$phraseur_xml->depth;
  $contenu = &$phraseur_xml->contenu;
  $contenu[$depth] .= $phraseur_xml->translate_entities($data);
  $contenu[$depth] .= preg_match('/^script/',$phraseur_xml->ouvrant[$depth])
    ? $data
    : $phraseur_xml->translate_entities($data);
}

// http://doc.spip.org/@PiElement
@@ -143,7 +147,7 @@ function xml_parsestring($xml_parser, $data)
	global $phraseur_xml;
	$r = "";
	if (!xml_parse($xml_parser, $data, true)) {
	  // ne pas commencer le message par un "<" (cf spip_sax)
	  // ne pas commencer le message par un "<" (cf inc_sax_dist)
	  $r = xml_error_string(xml_get_error_code($xml_parser)) .
	    _L(" ligne ") .
	    xml_get_current_line_number($xml_parser) .
@@ -171,8 +175,8 @@ var $reperes = array();
}

// http://doc.spip.org/@inc_sax_dist
function inc_sax_dist($page) {
	global $phraseur_xml, $xml_parser, $xhtml_error;
function inc_sax_dist($page, $apply=false) {
	global $phraseur_xml, $xml_parser;

	$xml_parser = xml_parser_create($GLOBALS['meta']['charset']);
	xml_set_element_handler($xml_parser,
@@ -182,15 +186,26 @@ function inc_sax_dist($page) {
	xml_set_processing_instruction_handler($xml_parser, array($phraseur_xml, 'PiElement'));
	xml_set_default_handler($xml_parser, array($phraseur_xml, "defautElement"));
	xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, false);
	unset($GLOBALS['xhtml_error']);

	if ($apply) {
		ob_start();
		$page();
		$page = ob_get_contents();
		ob_end_clean();
	}

	$res = $phraseur_xml->xml_parsestring($xml_parser, $page);
	xml_parser_free($xml_parser);
	if ($res[0] != '<')
	  $xhtml_error = $res;
		$GLOBALS['xhtml_error'] = $res;
	else
	  $page = $res;
	return $page;
}



$GLOBALS['phraseur_xml'] = new PhraseurXML();
// exemple d'appel en ligne de commande:
#$error = $phraseur_xml->xml_parsefile($xml_parser, $_SERVER['argv'][1]);
+4 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -196,6 +196,10 @@ $ortho_servers = array ('http://ortho.spip.net/ortho_serveur.php');
// Produire du TeX ou du MathML ?
$traiter_math = 'tex';

// Appliquer un indenteur XHTML aux espaces public et/ou prive ?
$xhtml = false;
$xml_indent = false;

// Vignettes de previsulation des referers
// dans les statistiques
// 3 de trouves, possibilite de switcher
+4 −2
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -193,6 +193,8 @@ AND $l = @unserialize($l)) {

// Trouver la fonction eventuellement surchagee et l'appeler.
$var_f = charger_fonction($exec);
if (!$GLOBALS['xml_indent']
OR $GLOBALS['auteur_session']['statut']!='0minirezo')
	$var_f();

 else { include('public/debug.php'); debug_script($var_f); }
?>
+52 −22
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -149,7 +149,7 @@ function erreur_squelette($message='', $lieu='') {
// Le debusqueur version 3
//

// appelee a chaque sortie de boucle (cf compilo.php) et a chaque requete
// appelee a chaque sortie de boucle (cf compiler.php) et a chaque requete
// dans ce derniers cas on n'a pas le nom du squelette

// http://doc.spip.org/@boucle_debug_resultat
@@ -338,7 +338,6 @@ function ancre_texte($texte, $fautifs=array())
// http://doc.spip.org/@debug_dumpfile
function debug_dumpfile ($texte, $fonc, $type) {
	global $debug_objets, $var_mode_objet, $var_mode_affiche;
	global $auteur_session;

	$debug_objets[$type][$fonc . 'tout'] = $texte;
	if (!$debug_objets['sourcefile']) return;
@@ -350,25 +349,10 @@ function debug_dumpfile ($texte, $fonc, $type) {
	// - il contient souvent une Div restreignant la largeur a 3 fois rien
	// - ca fait 2 headers !
	ob_end_clean();

	include_spip('inc/headers');
	include_spip('inc/filtres');
	http_no_cache();
	lang_select($auteur_session['lang']);
	$self = str_replace("\\'", '&#39;', self());
	$self = parametre_url($self,'var_mode', 'debug');
	echo _DOCTYPE_ECRIRE,
	  html_lang_attributes(),
	  "<head>\n<title>",
	  ('Spip ' . $GLOBALS['spip_version_affichee'] . ' ' .
	   _T('admin_debug') . ' ' .
	   supprimer_tags(extraire_multi($GLOBALS['meta']['nom_site']))), 
	  "</title>\n",
	  "<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"; 

	debug_debut($fonc);
	if ($var_mode_affiche !== 'validation') {
		$self = parametre_url($self,'var_mode', 'debug');
	  foreach ($debug_objets['sourcefile'] as $nom_skel => $sourcefile) {
@@ -449,7 +433,9 @@ function debug_dumpfile ($texte, $fonc, $type) {
			$titre = 'zbug_' . $titre;
			$texte = ancre_texte($texte, array('',''));
		} else {
		  list($texte, $err) = emboite_texte($texte, $fonc, $self);
		  $sax = charger_fonction('sax', 'inc');
		  $res = $sax($texte);
		  list($texte, $err) = emboite_texte($res, $fonc, $self);
			if ($err === false)
				$err = _T('impossible');
			elseif ($err === true)
@@ -464,19 +450,63 @@ function debug_dumpfile ($texte, $fonc, $type) {
		echo $texte;
		echo "</fieldset></div>";
	}
	debug_fin();
	exit;
}

// Fonction pour l'espace de redaction, appeler par ecrire/index.php

function debug_script ($fonc) {

	$sax = charger_fonction($GLOBALS['xml_indent'], 'inc');
	$t = $sax($fonc, true);
	if (!isset($GLOBALS['xhtml_error']))
	  echo $t;
	else {
	  debug_debut($GLOBALS['exec']);
	  list($t, $err) = emboite_texte($t);
	  echo $err, $t;
	echo "\n</div>";
	echo '</body></html>';
	}
}

function debug_debut($titre)
{
	global $auteur_session;
	include_spip('inc/headers');
	include_spip('inc/filtres');
	http_no_cache();
	lang_select($auteur_session['lang']);
	echo _DOCTYPE_ECRIRE,
	  html_lang_attributes(),
	  "<head>\n<title>",
	  ('Spip ' . $GLOBALS['spip_version_affichee'] . ' ' .
	   _T('admin_debug') . ' ' . $titre . ' (' .
	   supprimer_tags(extraire_multi($GLOBALS['meta']['nom_site']))), 
	  ")</title>\n",
	  "<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"; 
}

function debug_fin()
{
	global $debug_objets;

	echo "\n</div>";
	include_spip('balise/formulaire_admin');
	echo inclure_balise_dynamique(
		balise_FORMULAIRE_ADMIN_dyn('spip-admin-float', $debug_objets)
	);
	echo '</body></html>';
	exit;
}

// http://doc.spip.org/@emboite_texte
function emboite_texte($texte, $fonc='',$self='')
{
	if (!($sax = charger_fonction('sax', 'inc') AND $res = $sax($texte)))
	if (!$texte)
		return array(ancre_texte($texte, array('','')), false);
	elseif (!ereg("^[[:space:]]*([^<][^0-9]*)([0-9]*)(.*[^0-9])([0-9]*)$",
		     $GLOBALS['xhtml_error'],
+1 −1

Fichier modifié.

Contient uniquement des modifications d'espaces.

+1 −1

Fichier modifié.

Contient uniquement des modifications d'espaces.

Chargement en cours