Skip to content
Extraits de code Groupes Projets
Valider d31e44b9 rédigé par esj's avatar esj
Parcourir les fichiers

Introduction du filtre d'incrustation ''filtre_text_html''.

Il incruste le corps d'une page Html après retrait des scripts (sécurité) en mettant devant une balise Style dont le contenu est celui des balises Style trouvées dans l'en-tête ainsi que le contenu des feuilles de styles reférencées.

Evidememnt ces références doivent être en URL absolues dans le document pour pouvoir être trouvées. En conséquence, pour donner l'exemple, les pages de l'espace privé de SPIP ont leur balise Link en URL absolue.

A noter que SafeHtml traite différemment les balises Script dans l'en-tête et celles dans le corps.
parent a030de81
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -566,14 +566,14 @@ function bandeau_double_rangee($rubrique, $sous_rubrique, $largeur)
. "</ul></div>\n"
. "</div>"
//script to show the submenus in IE6, not supporting :hover on li elements
. "<script type='text/javascript'>\n"
. "var boutons_admin = jQuery('#bandeau-principal li.boutons_admin');\n"
. '<script type="text/javascript"><!--'
. "\nvar boutons_admin = jQuery('#bandeau-principal li.boutons_admin');\n"
. "if(jQuery.browser.msie) boutons_admin.hover(\n"
. "function(){jQuery(this).addClass('sfhover')},\n"
. "function(){jQuery(this).removeClass('sfhover')}\n"
. ");\n"
. "boutons_admin.one('mouseover',decaleSousMenu);\n"
. "</script>\n";
. "// --></script>\n";
}
......
......@@ -108,7 +108,7 @@ onblur="changestyle(\'bandeauinterface\');"';
return '<span id="selecteur_couleur">'
. $bloc
. "</span>\n"
. "<script type='text/javascript'><!--
. '<script type="text/javascript"><!--' . "
$('#selecteur_couleur a')
.click(function(){
$('head>link#cssprivee')
......
......@@ -53,6 +53,30 @@ function filtre_text_csv_dist($t)
"|\n");
}
// Incrustation de HTML, si on est capable de le securiser
// sinon, afficher le source
function filtre_text_html_dist($t)
{
if (!preg_match(',<head>(.*?)</head>.*<body[^>]*>(.*)</body>,is', $t, $r))
return filtre_text_txt_dist($t);
list(,$h,$t) = $r;
$style = '';
// recuperer les styles internes
if (preg_match_all(',<style>([^>]*)</style>,is', $h, $r, PREG_PATTERN_ORDER))
$style = join("\n",$r[1]);
// ... et externes
if (preg_match_all(',<link[^>]*text/css[^>]*>,is', $h, $r, PREG_PATTERN_ORDER))
foreach($r[0] as $l) {
preg_match("/href='([^']*)'/", str_replace('"',"'",$l), $m);
$style .= "\n/* $l */\n"
. str_replace('<','',recuperer_page($m[1]));
}
// Pourquoi SafeHtml transforme-t-il en texte les scripts dans Body ?
$t = safehtml(preg_replace(',<script.*?</script>,is','',$t));
return (!$style ? '' : "\n<style>$style</style>") . $t;
}
// http://doc.spip.org/@filtre_audio_x_pn_realaudio
function filtre_audio_x_pn_realaudio($id)
{
......
......@@ -787,12 +787,12 @@ function envoi_link($nom_site_spip, $minipres=false) {
// CSS de secours en cas de non fonct de la suivante
$res = '<link rel="stylesheet" type="text/css" href="'
. find_in_path('style_prive_defaut.css')
. url_absolue(find_in_path('style_prive_defaut.css'))
. '" />' . "\n"
// CSS calendrier
. '<link rel="stylesheet" type="text/css" href="'
. find_in_path('agenda.css') .'" />' . "\n"
. url_absolue(find_in_path('agenda.css')) .'" />' . "\n"
// CSS espace prive : la vraie
. '<link rel="stylesheet" type="text/css" href="'
......@@ -804,25 +804,25 @@ function envoi_link($nom_site_spip, $minipres=false) {
// CSS imprimante (masque des trucs, a completer)
. '<link rel="stylesheet" type="text/css" href="'
. find_in_path('spip_style.css')
. url_absolue(find_in_path('spip_style.css'))
. '" media="all" />' . "\n"
// CSS imprimante (masque des trucs, a completer)
. '<link rel="stylesheet" type="text/css" href="'
. find_in_path('spip_style_print.css')
. url_absolue(find_in_path('spip_style_print.css'))
. '" media="print" />' . "\n"
// CSS "visible au chargement" differente selon js actif ou non
. '<link rel="stylesheet" type="text/css" href="'
. find_in_path('spip_style_'
. (_SPIP_AJAX ? 'invisible' : 'visible')
. '.css')
. url_absolue(find_in_path('spip_style_'
. (_SPIP_AJAX ? 'invisible' : 'visible')
. '.css'))
.'" />' . "\n"
// CSS optionelle minipres
. ($minipres?'<link rel="stylesheet" type="text/css" href="'
. find_in_path('minipres.css').'" />' . "\n":"")
. url_absolue(find_in_path('minipres.css')).'" />' . "\n":"")
// favicon.ico
. '<link rel="shortcut icon" href="'
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter