[SPIP Zone] Eteindre le surlignement

Bonjour !

Lorsqu'on atterit sur une page d'un site SPIP après une recherche les mots recherchés se trouvent surlignés. C'est assez utile. Mais cela gâche aussi l'apparence de la page. Une fois qu'on se décide à lire la page on peut vouloir « éteindre » le surlignement. Est-ce que un plugin existe qui propose déjà cette fonctionnalité ?

Paolo

On 16/04/10 17:40, Guy Cesaro wrote:
> Tu fais un squelette sans le surlignement et un bouton modifie le
> squelette appelé en conservant les paramètres ? Tout ça dans des inclure
> ajax ?

Euh... Un autre squelette ? Cela veut dire quand même recharger la page, non ?

Moi je pensais plutôt afficher un bouton «Eteindre» si la présence des <span> surlignement est détectée. Et ce bouton déclenchera une modif CSS de ces spans par jQuery.

Paolo

recharger le bloc de résultats de recherche sera nécessaire puisque le traitement du surlignage ajoute une class CSS. Ce bloc s’il est dans un inclure peut se recharger sans recharger la page.

Le 16 avril 2010 18:11, Paolo <paolo2@taize.fr> a écrit :

On 16/04/10 17:40, Guy Cesaro wrote:

Tu fais un squelette sans le surlignement et un bouton modifie le
squelette appelé en conservant les paramètres ? Tout ça dans des inclure
ajax ?

Euh… Un autre squelette ? Cela veut dire quand même recharger la page, non ?

Moi je pensais plutôt afficher un bouton «Eteindre» si la présence des surlignement est détectée. Et ce bouton déclenchera une modif CSS de ces spans par jQuery.

Paolo


spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone

Je ne suis pas sur d’avoir compris mais en ce qui me concerne, j’ai créé le fichier squelettes/inc/surligne.php dans lequel j’ai simplement mis cette fonction :

<?php function surligner_mots($texte) { return $texte; } ?>

De cette façon, SPIP ne surligne plus les résultats de ma recherche.

Thomas

Le 15 avril 2010 16:58, Paolo <paolo2@taize.fr> a écrit :

Bonjour !

Lorsqu’on atterit sur une page d’un site SPIP après une recherche les mots recherchés se trouvent surlignés. C’est assez utile. Mais cela gâche aussi l’apparence de la page. Une fois qu’on se décide à lire la page on peut vouloir « éteindre » le surlignement. Est-ce que un plugin existe qui propose déjà cette fonctionnalité ?

Paolo


spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone

* Guy Cesaro tapuscrivait, le 16/04/2010 18:28:

recharger le bloc de résultats de recherche sera nécessaire puisque le
traitement du surlignage ajoute une class CSS. Ce bloc s'il est dans un
inclure peut se recharger sans recharger la page.

Il me semble que ça s'était valable avant SPIP 2.
Mais que SPIP 2 fait ça via du javascript, dynamiquement, au chargement de la page...

Et du coup, la question de Paolo a tout son sens !

-- RealET

Heu vite fait comme ça en passant, une solution simple :

Un plugin qui ajoute un lien jQuery (présnet uniquement si #ENV{recherche} vaut quelque chose) qui s'occupe de coller un background transparent à tous les éléments qui portent la fameuse classe "surlinge" et zou...

++
b_b

Le 16/04/2010 18:11, Paolo a écrit :

On 16/04/10 17:40, Guy Cesaro wrote:
> Tu fais un squelette sans le surlignement et un bouton modifie le
> squelette appelé en conservant les paramètres ? Tout ça dans des inclure
> ajax ?

Euh... Un autre squelette ? Cela veut dire quand même recharger la page,
non ?

Moi je pensais plutôt afficher un bouton «Eteindre» si la présence des
<span> surlignement est détectée. Et ce bouton déclenchera une modif CSS
de ces spans par jQuery.

Paolo

_______________________________________________
spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone

pour info moi j'utilise la syntaxe donnée par denisb

<?php
// On ne veut pas du jaune apres recherche google ou SPIP
// Ca fait tâche avec certains themes
// Et si besoin on definira la classe .spip_surligne
function surligner_mots($page) {
return $page;
}

Ca marche aussi en SPIP 2 et comme thomas je le met dans
squelettes/inc/surlign.php

Fil m'a dit sur irc que le surlignement est dans c'est dans
./prive/javascript/SearchHighlight.js
Il disait aussi dans mes logs
[09:33] <_fil_> oui ça pourrait être mieux fait
[09:33] <_fil_> avec un cookie par exemple
[09:34] <_fil_> à la place de l'analyse du referer

Sinon on peut aussi redéfinir la classe .spip_surligne

On 16/04/10 22:25, Bruno Bergot wrote:

Heu vite fait comme ça en passant, une solution simple :

Un plugin qui ajoute un lien jQuery (présnet uniquement si
#ENV{recherche} vaut quelque chose) qui s'occupe de coller un background
transparent à tous les éléments qui portent la fameuse classe "surlinge"
et zou...

Oui, exactement cela. Car je veux avoir le surlignement -- mais pouvoir l'éteindre simplement, d'un clic, sans devoir recharger la page.

Paolo

un truc du genre

<a href="#" onclick="jQuery('.spip_surligne').removeClass('spip_surligne');return false;">Eteindre le surlignement</a>

Y a surement une lame du couteau suisse qui fait deja ça.
Cédric

Le 16 avr. 2010 à 22:39, Paolo a écrit :

On 16/04/10 22:25, Bruno Bergot wrote:

Heu vite fait comme ça en passant, une solution simple :

Un plugin qui ajoute un lien jQuery (présnet uniquement si
#ENV{recherche} vaut quelque chose) qui s'occupe de coller un background
transparent à tous les éléments qui portent la fameuse classe "surlinge"
et zou...

Oui, exactement cela. Car je veux avoir le surlignement -- mais pouvoir l'éteindre simplement, d'un clic, sans devoir recharger la page.

Paolo

_______________________________________________
spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone

On 16/04/10 22:46, cedric.morin@yterium.com wrote:

<a href="#" onclick="jQuery('.spip_surligne').removeClass('spip_surligne');return false;">Eteindre le surlignement</a>
Y a surement une lame du couteau suisse qui fait deja ça.

Et sinon, on pourrait en ajouter -- signé Cédric :wink:

merci bcp. Paolo

On 16/04/10 22:25, Bruno Bergot wrote:

Un plugin qui ajoute un lien jQuery (présnet uniquement si
#ENV{recherche} vaut quelque chose)

Le lien/bouton que Cédric propose marche très bien.

Mais le test sur #ENV{recherche} ne marche pas.
- D'abord, prive/javascript/SearchHighlight.js agit non seulement sur des recherches SPIP mais aussi des receherches Google, Yahoo, etc., ou #ENV{recherche} n'est jamais utilisé.
- Et aussi #ENV{recherche} vaut quelque chose seulement sur la page qui présente la liste de liens trouvés. Dès qu'on clique pour passer vers la page d'un de ces résultats #ENV{recherche} disparaît et le surlignement apparaît.

Cela joue (je pense) sur le « referrer ».

Est-ce que avec jQuery il faut relire la page pour voir si une classe spip_surligne existe ?

Ou peut-être SearchHighlight.js nous rend une façon plus direct pour nous dire s'il a trouvé quelque chose sur la page ?

Paolo

Le 17 avr. 2010 à 10:22, Paolo a écrit :

On 16/04/10 22:25, Bruno Bergot wrote:

Un plugin qui ajoute un lien jQuery (présnet uniquement si
#ENV{recherche} vaut quelque chose)

Le lien/bouton que Cédric propose marche très bien.

Mais le test sur #ENV{recherche} ne marche pas.
- D'abord, prive/javascript/SearchHighlight.js agit non seulement sur des recherches SPIP mais aussi des receherches Google, Yahoo, etc., ou #ENV{recherche} n'est jamais utilisé.
- Et aussi #ENV{recherche} vaut quelque chose seulement sur la page qui présente la liste de liens trouvés. Dès qu'on clique pour passer vers la page d'un de ces résultats #ENV{recherche} disparaît et le surlignement apparaît.

Cela joue (je pense) sur le « referrer ».

Est-ce que avec jQuery il faut relire la page pour voir si une classe spip_surligne existe ?

Il faut tester la présence de la fonction SearchHighlight, ce qui donne ça :

<a href="#" onclick="jQuery('.spip_surligne').removeClass('spip_surligne');return false;" style="display:none;" id="SearchHighlight_off">Eteindre le surlignement</a>
<script type='text/javascript'>
jQuery(function(){
if (jQuery.fn.SearchHighlight && jQuery('.spip_surligne').length)
  jQuery('#SearchHighlight_off').show();
});
</script>

On pourrait d'ailleurs ajouter ce bout de script par défaut (dans le du surlignement), ce qui permettrai dans un squelette
de simplement insérer ce qu'on veut avec l'id SearchHighlight_off pour éteindre le surlignement.

Cédric

On 17/04/10 10:53, cedric.morin@yterium.com wrote:

On pourrait d'ailleurs ajouter ce bout de script par défaut (dans le du
surlignement), ce qui permettrai dans un squelette de simplement insérer ce
qu'on veut avec l'id SearchHighlight_off pour éteindre le surlignement.

Je comprends que tu proposes d'insérer un bout de cela dans SearchHighlight.js pour rendre plus simple à afficher/cacher le lien ? Alors, stp oui !

Paolo

On 17/04/10 10:53, cedric.morin@yterium.com wrote:

jQuery('#SearchHighlight_off').show();

Dans un squelette ça marche seulement si on utilise :

jQuery('#searchHighlight_off').show();

car sinon SPIP prend le "#S" pour une balise !

... je ne suis pas fier que cela a pris tant de temps pour voir où était le problème :wink:

Paolo

grr c'est surtout pas normal.

Le 17 avr. 2010 à 17:54, Paolo a écrit :

On 17/04/10 10:53, cedric.morin@yterium.com wrote:

jQuery('#SearchHighlight_off').show();

Dans un squelette ça marche seulement si on utilise :

jQuery('#searchHighlight_off').show();

car sinon SPIP prend le "#S" pour une balise !

... je ne suis pas fier que cela a pris tant de temps pour voir où était le problème :wink:

Paolo

_______________________________________________
spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone