X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fecrire%2Fpublic.php;fp=www%2Fecrire%2Fpublic.php;h=0653d163cd64bae333401788ce5298140785ba3c;hp=5deb4515681bc869e55d5b453298d158b5934967;hb=e99f0878011913365e49b30d90e496c24c301393;hpb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed diff --git a/www/ecrire/public.php b/www/ecrire/public.php index 5deb451..0653d16 100644 --- a/www/ecrire/public.php +++ b/www/ecrire/public.php @@ -3,7 +3,7 @@ /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * - * Copyright (c) 2001-2010 * + * Copyright (c) 2001-2014 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * @@ -122,7 +122,7 @@ if (isset($GLOBALS['_INC_PUBLIC'])) { $debug = ((_request('var_mode') == 'debug') OR $tableau_des_temps) ? array(1) : array(); // Mettre le Content-Type Html si manquant - // Idem si debug, avec retrait du Content-Diposition pour voir le voir + // Idem si debug, avec retrait du Content-Disposition pour voir le voir if ($debug OR !isset($page['entetes']['Content-Type'])) { $page['entetes']['Content-Type'] = @@ -133,26 +133,14 @@ if (isset($GLOBALS['_INC_PUBLIC'])) { $html = preg_match(',^\s*text/html,',$page['entetes']['Content-Type']); } - if ($var_preview AND $html) { - include_spip('inc/filtres'); // pour http_img_pack - $x = _T('previsualisation'); - $x = http_img_pack('naviguer-site.png', $x) . ' ' . majuscules($x); - $x = "
$x
"; - if (!$pos = strpos($page['texte'], '')) - $pos = strlen($page['texte']); - $page['texte'] = substr_replace($page['texte'], $x, $pos, 0); - } - - $affiche_boutons_admin = ($html AND (( - isset($_COOKIE['spip_admin']) - AND !$flag_preserver - ) OR $debug)); + $affiche_boutons_admin = ((!!$debug) + OR ($html AND isset($_COOKIE['spip_admin']) AND !$flag_preserver) + OR ($html AND ($_GET['var_mode']=='preview') AND !$flag_preserver) + ); if ($affiche_boutons_admin) include_spip('balise/formulaire_admin'); - - // decompte des visites, on peut forcer a oui ou non avec le header X-Spip-Visites // par defaut on ne compte que les pages en html (ce qui exclue les js,css et flux rss) $spip_compter_visites = $html?'oui':'non'; @@ -163,24 +151,17 @@ if (isset($GLOBALS['_INC_PUBLIC'])) { // Execution de la page calculee - // traitements sur les entetes avant envoi // peut servir pour le plugin de stats $page['entetes'] = pipeline('affichage_entetes_final', $page['entetes']); - - // 1. Cas d'une page contenant uniquement du HTML : - if ($page['process_ins'] == 'html') { - envoyer_entetes($page['entetes']); - } - - // 2. Cas d'une page contenant du PHP : + if ($page['process_ins'] != 'html') { + // Cas d'une page contenant du PHP : // Attention cette partie eval() doit imperativement // etre declenchee dans l'espace des globales (donc pas // dans une fonction). - else { - // sinon, inclure_balise_dynamique nous enverra peut-etre - // quelques en-tetes de plus (voire qq envoyes directement) + // inclure_balise_dynamique nous enverra peut-etre + // quelques en-tetes de plus (voire qq envoyes directement) // restaurer l'etat des notes if (isset($page['notes']) AND $page['notes']){ @@ -189,21 +170,28 @@ if (isset($GLOBALS['_INC_PUBLIC'])) { } ob_start(); xml_hack($page, true); - $res = eval('?' . '>' . $page['texte']); + $page['process_ins'] = eval('?' . '>' . $page['texte']); $page['texte'] = ob_get_contents(); xml_hack($page); ob_end_clean(); + } - envoyer_entetes($page['entetes']); - // en cas d'erreur lors du eval, - // la memoriser dans le tableau des erreurs + if ($var_preview + AND $var_preview = charger_fonction('previsualisation', 'public', true)) { + $page = $var_preview($page); + // Cette variable a ete calculee trop tot + // on laisse son calcul ci-dessus pour compatibilite + // bien que l'enlever a l'air sans incidence + $html = preg_match(',^\s*text/html,',$page['entetes']['Content-Type']); + } + envoyer_entetes($page['entetes']); - if ($res === false) { + // en cas d'erreur lors du eval, + // la memoriser dans le tableau des erreurs + if ($page['process_ins'] === false) { $msg = array('zbug_erreur_execution_page'); erreur_squelette($msg); - } } - // // Post-traitements //