Browse Source

Report de 20070 : Report de r15039 qui avait ete oublie : gestion de la page d'erreur 404 extensible par pipeline page_indisponible

3.1
Cerdic 10 years ago
parent
commit
b37c6eaee7
  1. 1
      ecrire/paquet.xml
  2. 37
      ecrire/public/assembler.php

1
ecrire/paquet.xml

@ -97,6 +97,7 @@
<pipeline nom="notifications_envoyer_mails" action="" />
<pipeline nom="objet_compte_enfants" action="" />
<pipeline nom="optimiser_base_disparus" action="" />
<pipeline nom="page_indisponible" action="" />
<pipeline nom="prepare_recherche" action="" />
<pipeline nom="pre_boucle" action="" />
<pipeline nom="post_boucle" action="" />

37
ecrire/public/assembler.php

@ -123,9 +123,8 @@ function assembler($fond, $connect='') {
AND _VAR_MODE != 'debug'
AND !isset($page['entetes']['Location']) // cette page realise une redirection, donc pas d'erreur
) {
$code = ($page !== false) ?
'404 Not Found' : '503 Service Unavailable';
$page = message_erreur_404('', $code);
$contexte['fond_erreur'] = $fond;
$page = message_page_indisponible($page, $contexte);
}
// pas de cache client en mode 'observation'
if (defined('_VAR_MODE') AND _VAR_MODE) {
@ -366,18 +365,32 @@ function inclure_balise_dynamique($texte, $echo=true, $contexte_compil=array())
}
// http://doc.spip.org/@message_erreur_404
function message_erreur_404 ($erreur= "", $code='404 Not Found') {
// http://doc.spip.org/@message_page_indisponible
function message_page_indisponible ($page, $contexte) {
static $deja = false;
if ($deja) return "erreur";
$deja = true;
$contexte_inclus = array(
'erreur' => $erreur?_T($erreur):"",
'code' => $code,
'lang' => $GLOBALS['spip_lang']
$codes = array(
'404' => '404 Not Found',
'503' => '503 Service Unavailable',
);
$page = inclure_page('404', $contexte_inclus);
$page['status'] = intval($code);
$contexte['status'] = ($page !== false) ? '404' : '503';
$contexte['code'] = $codes[$contexte['status']];
$contexte['fond'] = '404'; // gere les 2 erreurs
if (!isset($contexte['lang']))
$contexte['lang'] = $GLOBALS['spip_lang'];
$deja = true;
// passer aux plugins qui peuvent decider d'une page d'erreur plus pertinent
// ex restriction d'acces => 401
$contexte = pipeline('page_indisponible',$contexte);
// produire la page d'erreur
$page = inclure_page($contexte['fond'], $contexte);
if (!$page)
$page = inclure_page('404', $contexte);
$page['status'] = $contexte['status'];
return $page;
}

Loading…
Cancel
Save