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

En remplacement du bouton disparu en [8319], le validateur de Spip est...

En remplacement du bouton disparu en [8319], le validateur de Spip est appelable par un script assez semblable au script de recherche: valider_xml. Afin de conserver une unité graphique et améliorer l'ergonomie, le résultat de la validation est présenté sous le bandeau habituel de l'espace privé, avec une zone de saisie pour redemander la validation au besoin, après correction. Il suffit alors de donner le nom du script (accueil, admin_tech etc) ou l'URL complète http:... etc si l'on veut mettre des paramètres d'URL.

C'est moins ergonomique que le bouton, mais ça a comme conséquence que ce script est applicable à n'importe quelle page Web, pas seulement celles créées par le site. Télécharger Spip 1.9.2, le validateur XML avec CMS intégré ;-).
parent bf76041e
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+1 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -479,6 +479,7 @@ ecrire/exec/statistiques_visites.php -text
ecrire/exec/synchro.php -text
ecrire/exec/tourner.php -text
ecrire/exec/upgrade.php -text
ecrire/exec/valider_xml.php -text
ecrire/exec/virtualiser.php -text
ecrire/inc/actions.php -text
ecrire/inc/agenda.php -text
+71 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
<?php

/***************************************************************************\
 *  SPIP, Systeme de publication pour l'internet                           *
 *                                                                         *
 *  Copyright (c) 2001-2007                                                *
 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
 *                                                                         *
 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
\***************************************************************************/

if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/presentation');

// http://doc.spip.org/@exec_recherche_dist
function exec_valider_xml_dist()
{
	if ($GLOBALS['connect_statut'] != '0minirezo') {
		echo minipres();
		exit;
	}

	$url = urldecode(_request('var_url'));

	if (!$url) {
	  $url_aff = 'http://';
	  $onfocus = "this.value='';";
	  $texte = $err = '';

	} else {

	  list($server, $script) = preg_split('/[?]/', $url);
	  if ((!$server) OR ($server == './') 
	      OR strpos($server, url_de_base()) === 0) {
	    	    include_spip('inc/headers');
	    	    redirige_par_entete(parametre_url($url,'transformer_xml','valider_xml', '&'));
	  }

	  include_spip('public/debug');
	  include_spip('inc/distant');
	  $url_aff = entites_html($url);
	  $onfocus = "this.value='" . addslashes($url) . "';";

	  $transformer_xml = charger_fonction('valider_xml', 'inc');

	  if (preg_match(',^[a-z][0-9a-z_]*$,i', $url))
		$texte = $transformer_xml(charger_fonction($url, 'exec'), true);
	  else 	$texte = $transformer_xml(recuperer_page($url));

	  if (isset($GLOBALS['xhtml_error'])) 
	  	list($texte, $err) = emboite_texte($texte);
	  else {
	    $err = '<h3>' . _T('spip_conforme_dtd') . '</h3>';
	    list($texte, ) = emboite_texte($texte);
	  }
	}
	$titre = _T('analyse_xml');
	$commencer_page = charger_fonction('commencer_page', 'inc');
	echo $commencer_page($titre);

	echo "<div style='margin: 10px; text-align: center'>", "<h1>", $titre, '</h1>';
	echo "<form style='margin: 0px;' action='", generer_url_ecrire('valider_xml') . "'>";
	echo "<div><input type='hidden' name='exec' value='valider_xml' />";
	echo '<input type="text" size="70" value="',$url_aff,'" name="var_url" onfocus="'.$onfocus . '" />';
	echo "</div></form>";

	echo  $err, "</div>";
	echo "<div style='margin: 10px; text-align: left'>",$texte, '</div>', fin_page();
}
?>
+14 −7
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -192,12 +192,19 @@ AND $l = @unserialize($l)) {
	}
}

// Trouver la fonction eventuellement surchagee et l'appeler.
// Passer la main aux outils XML a la demande.
if (isset($GLOBALS['transformer_xml'])
AND $GLOBALS['auteur_session']['statut']=='0minirezo') {
	set_request('var_url', $exec);
	$exec = $GLOBALS['transformer_xml'];
 }

// Trouver la fonction eventuellement surchagee

$var_f = charger_fonction($exec);
if (!isset($GLOBALS['transformer_xml'])
OR $GLOBALS['auteur_session']['statut']!='0minirezo')

// Feu !

$var_f();
 else { include('public/debug.php');
   debug_script($var_f, true);
 }

?>
+17 −44
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -42,10 +42,12 @@ function afficher_debug_contexte($env) {

// Si le code php produit des erreurs, on les affiche en surimpression
// sauf pour un visiteur non admin (lui ne voit rien de special)
// et en mode validation (fausse erreur "double occurrence insert_head")
// ajouter &var_mode=debug pour voir les erreurs et en parler sur spip@rezo.net
// http://doc.spip.org/@affiche_erreurs_page
function affiche_erreurs_page($tableau_des_erreurs) {

	if ($GLOBALS['exec']=='valider_xml') return '';
	$GLOBALS['bouton_admin_debug'] = true;
	$res = '';
	foreach ($tableau_des_erreurs as $err) {
@@ -308,6 +310,7 @@ function ancre_texte($texte, $fautifs=array())
	global $var_mode_ligne;
	if ($var_mode_ligne) $fautifs[]= array($var_mode_ligne);
	$res ='';

	$s = highlight_string(str_replace('</script>','</@@@@@>',$texte),true);

	$s = str_replace('/@@@@@','/script', // bug de highlight_string
@@ -318,6 +321,7 @@ function ancre_texte($texte, $fautifs=array())
	$s = preg_replace(',<(\w[^<>]*)>([^<]*)<br />([^<]*)</\1>,',
			  '<\1>\2</\1><br />' . "\n" . '<\1>\3</\1>',
			  $s);

	$tableau = explode("<br />", $s);

	$ancre = md5($texte);
@@ -377,7 +381,7 @@ function debug_dumpfile ($texte, $fonc, $type) {
	$self = str_replace("\\'", '&#39;', self());
	$self = parametre_url($self,'var_mode', 'debug');

	debug_debut($fonc);
	echo debug_debut($fonc);
	if ($var_mode_affiche !== 'validation') {
		$self = parametre_url($self,'var_mode', 'debug');
	  foreach ($debug_objets['sourcefile'] as $nom_skel => $sourcefile) {
@@ -480,39 +484,6 @@ function debug_dumpfile ($texte, $fonc, $type) {
	exit;
}

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

// http://doc.spip.org/@debug_script
function debug_script ($f, $apply=false) {

	$transformer_xml=charger_fonction($GLOBALS['transformer_xml'], 'inc');
	$t = $transformer_xml($f, $apply);

	debug_debut($GLOBALS['exec']);
	if (!isset($GLOBALS['xhtml_error'])) {
		list (,$top, $avail, $grammaire, $rotlvl) = analyser_doctype($t);
		$err = '<h3>' . _T('spip_conforme_dtd')
		. "<br /><a href='" 
		. $grammaire
		. "'>"
		. $rotlvl
		. '</a></h3>';
		list($t, ) = emboite_texte($t);
	} else {
		list($t, $err) = emboite_texte($t);
	}

	echo "<div style='text-align: center'><h1>", _T('analyse_xml') . '</h1>',
	  $err,
	   "<br /><a href='"
	    . parametre_url(self(),'transformer_xml', '')
	    . "'>"
	    .  _T("access_interface_graphique")
	    . "</a></div>";
	echo $t;
	echo "\n</div></div></body></html>";
}

// http://doc.spip.org/@debug_debut
function debug_debut($titre)
{
@@ -521,19 +492,19 @@ function debug_debut($titre)
	include_spip('inc/filtres');
	http_no_cache();
	lang_select($auteur_session['lang']);
	echo _DOCTYPE_ECRIRE,
	  html_lang_attributes(),
	  "<head>\n<title>",
	return _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",
	  "<meta http-equiv='Content-Type' content='text/html",
	  (($c = $GLOBALS['meta']['charset']) ? "; charset=$c" : ''),
	  "' />\n",
	   supprimer_tags(extraire_multi($GLOBALS['meta']['nom_site']))) . 
	  ")</title>\n" .
	  "<meta http-equiv='Content-Type' content='text/html" .
	  (($c = $GLOBALS['meta']['charset']) ? "; charset=$c" : '') .
	  "' />\n" .
	  "<link rel='stylesheet' href='".url_absolue(find_in_path('spip_admin.css'))
	  . "' type='text/css' />",
	  "</head>\n<body style='margin:0 10px;'>",
	  . "' 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"; 
}

@@ -559,6 +530,7 @@ function emboite_texte($texte, $fonc='',$self='')
	elseif (!ereg("^[[:space:]]*([^<][^0-9]*)([0-9]*)(.*[^0-9])([0-9]*)$",
                     $GLOBALS['xhtml_error'],
                     $eregs))

		return array(ancre_texte($texte, array('', '')), true);
	if (!isset($GLOBALS['debug_objets'])) {
		preg_match_all(",(.*?)(\d+)(\D+(\d+)<br />),",
@@ -588,6 +560,7 @@ function emboite_texte($texte, $fonc='',$self='')
		}			
		$encore2 = array();
		$colors = array('#e0e0f0', '#f8f8ff');

		foreach($regs as $r) {
			$i++;
			list(,$msg, $ligne, $fin, $col) = $r;