From ac57e525c940f75db3821d29db71c4f48502c3e0 Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Tue, 19 Mar 2002 18:13:01 +0000 Subject: [PATCH] le surlignage automatique des mots de la recherche. Pour l'instant c'est la variable var_s=xxxx --- ecrire/admin_tech.php3 | 4 ++-- ecrire/inc_filtres.php3 | 37 +++++++++++++++++++++++++++++++++++++ ecrire/inc_version.php3 | 12 +++++++----- ecrire/index.php3 | 2 +- inc-public.php3 | 30 ++++++++++++++++++++++++++++++ spip_style.css | 22 ++++++++++++---------- 6 files changed, 89 insertions(+), 18 deletions(-) diff --git a/ecrire/admin_tech.php3 b/ecrire/admin_tech.php3 index 275f94c043..9d5e86deed 100644 --- a/ecrire/admin_tech.php3 +++ b/ecrire/admin_tech.php3 @@ -57,7 +57,7 @@ le contenu de la base dans un fichier qui sera stocké dans le répe N'oubliez pas également de récupérer l'intégralité du répertoire <i>IMG/</i>, qui contient les images utilisées dans les articles et les rubriques."; -if ($gz_exists) { +if ($flag_gz) { echo "\n<p align='justify'>Vous pouvez choisir de sauvegarder le fichier sous forme compressée, afin d'écourter son transfert chez vous ou sur un serveur de sauvegardes, et d'économiser de l'espace disque.<p>"; echo "\n<INPUT TYPE='radio' NAME='gz' VALUE='1' id='gz_on' CHECKED><label for='gz_on'> sauvegarde compressée sous <b>ecrire/data/dump.xml.gz</b> </label><BR>\n"; @@ -96,7 +96,7 @@ Soyez prudent avec cette fonctionnalité : <b>les modifications, pert irréversibles.</b>"; -if ($gz_exists) { +if ($flag_gz) { $fichier_defaut = 'dump.xml.gz'; $texte_compresse = "(celui-ci peut être compressé ou non) "; } diff --git a/ecrire/inc_filtres.php3 b/ecrire/inc_filtres.php3 index a8bee30b9b..9b589d9c67 100644 --- a/ecrire/inc_filtres.php3 +++ b/ecrire/inc_filtres.php3 @@ -357,4 +357,41 @@ function centrer($letexte) { return aligner($letexte,'center'); } +// utilise avec ob_start() et ob_get_contents() pour +// mettre en rouge les mots passes dans $var_s +function mots_surligne($page) { + global $var_s; + + // s'il y a des accents dans les mots, nettoyer la page + // ne prendre en consideration que les mots > 3 lettres + // et pas plus de 5 mots + $trans = get_html_translation_table(HTML_ENTITIES); + $mots = split(" +",$var_s); + while (list(,$mot) = each ($mots)) { + if (strlen($mot)>3) { + if ($trans) { + $motx = strtr($mot, $trans); + if ($motx != $mot) { + $trans = array_flip($trans); + $page = strtr($page,$trans); + $trans = false; + } + } + $mots_surligne[] = $mot; + if ($nb_mots ++ > 4) break; + } + } + + // remplacer 4 occurrences maxi de chaque mot + reset ($mots_surligne); + if ($mots_surligne AND eregi('<html', $page)) { + while (list(,$mot) = each($mots_surligne)) { + $regexp = "/(>([^<]*[^[:alnum:]])?)(($mot)"."[[:alnum:]]*?)/Uis"; + $page = preg_replace($regexp,"$1<span class='spip_surligne'>$3</span>", $page, 4); + } + } + + return $page; +} + ?> diff --git a/ecrire/inc_version.php3 b/ecrire/inc_version.php3 index 3e72278851..2dfc541b28 100644 --- a/ecrire/inc_version.php3 +++ b/ecrire/inc_version.php3 @@ -33,8 +33,9 @@ $flag_str_replace = ($php_version_maj > 3 OR $php_version_min >= 8); $flag_strpos_3 = (@strpos('baba', 'a', 2) == 3); if ($flag_function_exists) { - $gz_exists = function_exists("gzopen"); - $ob_exists = function_exists("ob_gzhandler"); + $flag_gz = function_exists("gzopen"); + $flag_obgz = function_exists("ob_gzhandler"); + $flag_ob = function_exists("ob_start"); $flag_preg_replace = function_exists("preg_replace"); $flag_crypt = function_exists("crypt"); $flag_wordwrap = function_exists("wordwrap"); @@ -42,8 +43,9 @@ if ($flag_function_exists) { $flag_sapi_name = function_exists("php_sapi_name"); } else { - $gz_exists = false; - $ob_exists = false; + $flag_gz = false; + $flag_obgz = false; + $flag_ob = false; $flag_preg_replace = false; $flag_crypt = true; // la non-existence de crypt est une exception $flag_wordwrap = false; @@ -227,7 +229,7 @@ function tester_accesdistant() { // compressee pour economiser de la bande passante // -if ($ob_exists) { +if ($flag_obgz) { $use_gz = true; // special bug de proxy diff --git a/ecrire/index.php3 b/ecrire/index.php3 index ea519707a8..2bddadffb7 100644 --- a/ecrire/index.php3 +++ b/ecrire/index.php3 @@ -160,7 +160,7 @@ if ($meta["debut_restauration"]) { fin_page(); echo "</HTML><font color='white'>\n<!--"; @flush(); - $gz = $gz_exists; + $gz = $flag_gz; $_fopen = ($gz) ? gzopen : fopen; if ($ok) { diff --git a/inc-public.php3 b/inc-public.php3 index 3d8ea4bdb6..46484d12f0 100644 --- a/inc-public.php3 +++ b/inc-public.php3 @@ -143,6 +143,19 @@ else { } +// +// si $var_s est positionnee, on met en rouge les mots cherches (php4 uniquement) +// + +if ($var_s) { + if ($flag_ob AND $flag_preg_replace AND $var_s AND !$flag_preserver) { + include_ecrire("inc_filtres.php3"); + ob_start(); + } else + $var_s = false; +} + + // // Inclusion du cache pour envoyer la page au client // @@ -154,6 +167,23 @@ if (file_exists($chemin_cache)) { apc_rm($chemin_cache); } } + + +// +// suite et fin mots en rouge +// + +if ($var_s) { + $la_page = ob_get_contents(); + ob_end_clean(); + echo mots_surligne($la_page); +} + + +// +// nettoie +// + @flush(); if (!$delais) @unlink($chemin_cache); diff --git a/spip_style.css b/spip_style.css index 1f807f3878..8332bbff70 100644 --- a/spip_style.css +++ b/spip_style.css @@ -7,9 +7,9 @@ a:hover { text-decoration: underline; } -a.spip_url { } -a.spip_in { } -a.spip_out { } +a.spip_url { } +a.spip_in { } +a.spip_out { } .spip_code { } @@ -56,17 +56,17 @@ i.spip { } .forml { width: 100% ; background-color: #FFDDAA;} -.spip_encadrer { +.spip_encadrer { width : 100%; - background-color: #FFFFFF; - padding: 5px; - border: 1px #666666 solid; + background-color: #FFFFFF; + padding: 5px; + border: 1px #666666 solid; } -.spip_cadre { +.spip_cadre { width : 100%; - background-color: #FFFFFF; - padding: 5px; + background-color: #FFFFFF; + padding: 5px; } @@ -80,3 +80,5 @@ i.spip { } font-size: 110%; color: red; } + +.spip_surligne { background-color: #FFFF66; } \ No newline at end of file -- GitLab