diff --git a/ecrire/action/redirect.php b/ecrire/action/redirect.php index 368c94d18966d0ec715eb2fc5d687cbfb49a5476..04246accc3ba9bc88aa37002ade9a2476ff579c6 100644 --- a/ecrire/action/redirect.php +++ b/ecrire/action/redirect.php @@ -21,6 +21,7 @@ charger_generer_url(); function action_redirect_dist() { global $redirect; + $redirect = _request('redirect'); if ($mode = _request('var_mode')) $mode = "var_mode=$mode"; diff --git a/ecrire/inc/lang.php b/ecrire/inc/lang.php index 594bdc2f0697af9ae0844111e8a3dfe0992dcff7..2e911e87beb22629d693e08942375a3be07a71c3 100644 --- a/ecrire/inc/lang.php +++ b/ecrire/inc/lang.php @@ -77,11 +77,17 @@ function lang_dir($lang='', $droitier='ltr', $gaucher='rtl') { // http://doc.spip.org/@lang_typo function lang_typo($lang='') { if (!$lang) { - $lang = isset($GLOBALS['lang_objet']) ? $GLOBALS['lang_objet'] : $GLOBALS['spip_lang']; + $lang = isset($GLOBALS['lang_objet']) + ? $GLOBALS['lang_objet'] + : $GLOBALS['spip_lang']; } - if ($lang == 'eo' OR $lang == 'fr' OR substr($lang, 0, 3) == 'fr_' OR $lang == 'cpf') + if ($lang == 'eo' + OR $lang == 'fr' + OR substr($lang, 0, 3) == 'fr_' + OR $lang == 'cpf') return 'fr'; - else return 'en'; + else + return 'en'; } // gestion de la globale $lang_objet pour que les textes soient affiches diff --git a/ecrire/inc/texte.php b/ecrire/inc/texte.php index 931a94e8d7f1da9d9056a4ca36e2e0e4c518a869..56ef7a88fd856ed3d3ae8230496e2821a122a75b 100644 --- a/ecrire/inc/texte.php +++ b/ecrire/inc/texte.php @@ -457,28 +457,31 @@ function typo($letexte, $echapper=true) { // Caracteres de controle "illegaux" $letexte = corriger_caracteres($letexte); - // Proteger les caracteres typographiques a l'interieur des tags html - $protege = "!':;?~%"; - $illegal = "\x1\x2\x3\x4\x5\x6\x7"; - if (preg_match_all(",</?[a-z!][^<>]*[!':;\?~%][^<>]*>,imsS", - $letexte, $regs, PREG_SET_ORDER)) { - foreach ($regs as $reg) { - $insert = $reg[0]; - // hack: on transforme les caracteres a proteger en les remplacant - // par des caracteres "illegaux". (cf corriger_caracteres()) - $insert = strtr($insert, $protege, $illegal); - $letexte = str_replace($reg[0], $insert, $letexte); + // Charger & appliquer la fonction de typographie + if ($typographie = charger_fonction(lang_typo(), 'typographie')) { + + // Proteger les caracteres typographiques a l'interieur des tags html + $protege = "!':;?~%"; + $illegal = "\x1\x2\x3\x4\x5\x6\x7"; + if (preg_match_all(",</?[a-z!][^<>]*[!':;\?~%][^<>]*>,imsS", + $letexte, $regs, PREG_SET_ORDER)) { + foreach ($regs as $reg) { + $insert = $reg[0]; + // hack: on transforme les caracteres a proteger en les remplacant + // par des caracteres "illegaux". (cf corriger_caracteres()) + $insert = strtr($insert, $protege, $illegal); + $letexte = str_replace($reg[0], $insert, $letexte); + } } - } - $lang = lang_typo(); - lang_select($lang); - $typographie = charger_fonction($lang, 'typographie'); + $letexte = $typographie($letexte); + + // Retablir les caracteres proteges + $letexte = strtr($letexte, $illegal, $protege); + + } - $letexte = $typographie($letexte); - // Retablir les caracteres proteges - $letexte = strtr($letexte, $illegal, $protege); // // Installer les modeles, notamment images et documents ; @@ -495,9 +498,6 @@ function typo($letexte, $echapper=true) { if (function_exists('apres_typo')) $letexte = apres_typo($letexte); - // remettre la langue precedente - if ($lang) lang_select(); - // reintegrer les echappements if ($echapper) $letexte = echappe_retour($letexte, 'TYPO'); diff --git a/ecrire/public.php b/ecrire/public.php index c6c7353f1cf1517b5fe7522d74473626300a5c87..e17ef8f403bbacae7f81e7de778626990fd0bf52 100644 --- a/ecrire/public.php +++ b/ecrire/public.php @@ -56,8 +56,9 @@ if (defined('_INC_PUBLIC')) { include_spip('inc/headers'); $var_f = charger_fonction($action, 'action'); $var_f(); - if (_request('redirect')) - redirige_par_entete(urldecode(_request('redirect'))); + if ($GLOBALS['redirect'] + OR $GLOBALS['redirect'] = _request('redirect')) + redirige_par_entete(urldecode($GLOBALS['redirect'])); if (!headers_sent()) http_status(204); // No Content exit;