Cacher/Montrer du texte en 1 seul clic

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

A l’instar de nombreux scripts de forum, qui possède un BBcode nommé spoiler, voici la même technique, appliquée à SPIP. Ce nouveau filtre permet une solution élégante pour afficher/cacher des éléments aux visiteurs via un raccourci utilisé, par exemple, lors de la rédaction d’un article.

Définition

SPOILER [1] : Message indiquant la fin d’une histoire ou révélant des rebondissements qu’on préférerait ne pas connaître pour préserver l’effet de surprise lors de la découverte d’un film, d’un roman... Il est de bon ton de prévenir les gens qu’on va faire ces révélations, de façon que ceux qui préfèrent « ne pas savoir » n’aient pas leur plaisir gâché.

Ce filtre spoiler, appliqué à SPIP, permet donc, de cacher du texte par défaut, lors de l’affichage d’un article par exemple, et au clic de la souris, ce texte est révélé.

Le résultat en image :

Avant le « clic »
Après le « clic »

Filtre pour mes_fonctions.php3

function spoiler ($letexte) {
	$letexte = preg_replace("/<spoiler>/", "<div onClick=\"this.nextSibling.style.display=((this.nextSibling.style.display=='none')?'':'none');\"><a href='javascript:;'>Cliquez pour montrer/cacher</a></div><div style='display:none;'>", $letexte);
	$letexte = preg_replace("/<\/spoiler>/", "</div>", $letexte);
	return $letexte;
}

Compatibilité navigateurs

O.S. Navigateur Version Compatible
Windows Internet Explorer 6 Oui
Windows Firefox 0.9 Oui
Linux Mozilla 1.7.2 Oui
Linux Konqueror 3.2.3 Oui

Utilisation

D’une part, ajouter dans vos squelettes, article.html par exemple, le filtre suivant |spoiler à #TEXTE : [(#TEXTE|spoiler)].

D’autres part, lors de la rédaction de vos articles, vous devez utiliser la syntaxe suivante :

Quel est l'âge du capitaine ?
<spoiler>Réponse : 53 ans</spoiler>

Je me doute bien que certains trouveront d’autres utilisations à cette contrib’ (i.e. ailleurs que dans les articles). On doit également pouvoir cacher/montrer autre chose que du texte (des images par exemple).

Améliorations possibles

Permettre de spécifier le titre de ce spoiler. Ici, j’ai mis en dur « Cliquez pour montrer/cacher », mais on pourrait prévoir que la balise spoiler se comporte sous la forme :
<spoiler={titre}>{contenu}</spoiler>

N’hésitez pas à proposer l’expression régulière appropriée.

Notes

[1définition trouvée sur linux-france

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom