Deprecated: Function set_magic_quotes_runtime() is deprecated in /var/www/sda/3/a/fredomkb/forum/include/common.php on line 59

Warning: Cannot modify header information - headers already sent by (output started at /var/www/sda/3/a/fredomkb/forum/include/common.php:59) in /var/www/sda/3/a/fredomkb/forum/header.php on line 41

Warning: Cannot modify header information - headers already sent by (output started at /var/www/sda/3/a/fredomkb/forum/include/common.php:59) in /var/www/sda/3/a/fredomkb/forum/header.php on line 42

Warning: Cannot modify header information - headers already sent by (output started at /var/www/sda/3/a/fredomkb/forum/include/common.php:59) in /var/www/sda/3/a/fredomkb/forum/header.php on line 43

Warning: Cannot modify header information - headers already sent by (output started at /var/www/sda/3/a/fredomkb/forum/include/common.php:59) in /var/www/sda/3/a/fredomkb/forum/header.php on line 44
Projets pour Spip et PunBb / Affichage des notes de bas de page en intégralité par mouseover

MiniGriSpip

Petit site de test et de démonstration du squelette MiniGriSpip 1.6...
Accueil du site > Accueil forums > Squelette MiniGriSpip > Affichage des notes de bas de page en intégralité par mouseover
Projets pour Spip et PunBb - Petit forum de discussion autour de quelques projets personnels pour SPIP et PunBb.
     

Annonce

Bonjour et bienvenue sur les forums techniques de MiniGriSpip :-)

Quelques liens : Et Mgs alors ? - Balise #TMP - MiniGriSpip 1.6 - Mise-à-jour Calendrier

IMPORTANT : La participation à ces forums est strictement réservée aux membres inscrits, merci de votre compréhension.

ATTENTION : L'inscription au forum est désormais fermée pour cause de spams en trop grande quantité.

01/03/2011 - FredoMkb

  • Affichage des notes de bas de page en intégralité par mouseover

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 552

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 553

#1 27-04-2008 14:57:21

vincentf
Novice
Date d'inscription: 27-04-2008
Messages: 7

Affichage des notes de bas de page en intégralité par mouseover

Bonjour,
j'ai un petit problème à soumettre :
Je fais des articles souvent très longs et l'aller-retour vers les notes de bas de page rend fastidieuse la navigation pour mes visiteurs.
Ce que j'aimerais c'est quand l'indication note de bas de page apparait dans le corps du texte, l'on puisse, en survolant avec le curseur de la souris le petit numéro l'indiquant, accéder en mouveover à l'intégralité de la note qui apparait en encart.
Cela existe déjà sur mon site en minigripspip 1.4 mais l'affichage est limité à un nombre déterminé de caractères.

Voilà, si quelqu'un peut m'aider... tongue
Bien à vous
Vincent

Hors ligne

 

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 552

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 553

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 492

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 614

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 552

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 553

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

#2 27-04-2008 20:23:10

FredoMkb
Guide
Date d'inscription: 01-11-2006
Messages: 372
Site web

Re: Affichage des notes de bas de page en intégralité par mouseover

Bonjour et bienvenue Vincent smile

Alors, plusieurs solutions sont possibles, elle nécessitent pour la plupart des modifications importantes, mais voici peut-être la plus simple à mettre en oeuvre, même si ce n'est pas forcément la plus "propre" en terme de rendu final, elle est sûrement une des plus simples à installer et utiliser.

Nous allons installer un nouveau filtre Spip sur la balise "#TEXTE" des boucles "ARTICLES", du fichier "article.html", et "BREVES", du fichier "breve.html".

Ce filtre Spip se chargera de mettre en place de nouvelles balises Html autour des liens d'appel des notes de bas de page, lesquelles afficheront, grâce à des styles Css, des info-bulles personnalisés avec tout le contenu du texte de chaque note.

Voici les étapes pour installer et utiliser cette solution :

1. Édite le fichier principal de styles du squelette et insère, tout à la fin, les codes suivants :

Code:

/** Info-bulles **/
span.infobulle span { display: none; }
span.infobulle:hover span { 
    display: block; 
    font-family: Verdana, sans-serif; 
    font-size: 11px; 
    color: black;
    text-align: left;
    padding: 4px 8px; 
    margin: -20px 0px 0px 0px; 
    width: 220px; 
    position: absolute; 
    left: 50%; 
    background-color: lightyellow; 
    border: 1px solid gray; 
    overflow: hidden;
}

2. Édite le fichier Php nommé "mes_fonctions.php" et place, tout au début, juste après la balise d'ouverture "<?php", le code suivant :

Code:

/**********************************************************************************************************/
/* Filtre "mgs_infobulle" 1.0 */
/* ---------------------------------------------------------------------------------------------------- */
/* Infos : GPL - 04/08 (c) FredoMkb */
/* Utilisation : #TEXTE*|mgs_infobulle|propre */
/* Usage : Insere des balises "span" qui s'affichent comme info-bulles lors de leur survol */
/* Voir styles Css "infobulle" associes */
/* ---------------------------------------------------------------------------------------------------- */
function mgs_infobulle($texteOrig) {
// Fonction pour creer des info-bulles dans le texte des articles et breves.
// La fonction verifie l'existence des balises ouvrantes "[[|" et fermantes "|]]"
// si c'est le cas, elle les remplace par une balise survolable affichant une info-bulle
// avec tout le contenu des balises, meme s'il est formate en Html.
    
    // Test de l'existence des info-bulles. 
    preg_match("#\\[\\[\\|(.*?)\\|\\]\\]#iU", $texteOrig, $testInfoBulle);
    
    // Si un des info-bulles existent, alors on genere les balises survolables.
    if ($testInfoBulle[1] != false) {

        // On exclu les textes des codes et cadres
        $texteOrigClean = preg_replace('#<cadre>(.*?)</cadre>#s','',$texteOrig); 
        $texteOrigClean = preg_replace('#<code>(.*?)</code>#s','',$texteOrigClean); 
    
        // Recuperation des toutes les info-bulles presentes dans le texte nettoye.
        preg_match_all('#\\[\\[\\|(.*?)\\|\\]\\]#iU', $texteOrigClean, $listeOrig);
                
        // On place le resultat dans une variable et on initialise les autres variables.
        $listeInfoBullesOrig = $listeOrig[1];
        $lienDebut = '<span class="infobulle">[[';
        $lienCentre = ']]<span>';
        $lienFin = '</span></span>';
        
        // Boucle sur chaque element de la liste des info-bulles recuperees.
        foreach ($listeInfoBullesOrig as $textInfoBulleOrig) {
            $textInfoBulleNew = $lienDebut.$textInfoBulleOrig.$lienCentre.$textInfoBulleOrig.$lienFin;
            $texteOrig = str_replace("[[|".$textInfoBulleOrig."|]]", $textInfoBulleNew, $texteOrig);
        };
    };
    // Retour du texte modifie.
    return $texteOrig;
}
/**********************************************************************************************************/

3. Édite le fichier Html nommé "article.html", puis cherche la balise Spip "#TEXTE", qui doit normalement se trouver après la balise "#CHAPO", puis place le filtre Spip "mgs_infobulle" de la manière suivante :

- Pour Mgs version 1.4.x :

Code:

[<div class="mgs_texte">(#TEXTE*|mgs_infobulle|propre|reduire_image{500,0})</div>]

- Pour Mgs version 1.60 :

Code:

[<div class="mgs_texte">(#TEXTE*|somm_table|filets_sep|mgs_infobulle|propre|reduire_image{470,0})</div>]

ATTENTION !
Il faut que la balise "#TEXTE" soit suivie d'un astérisque, et que le filtre "mgs_infobulle" soit suivi du filtre "propre" pour assurer un bon formatage du texte.

4. Il faut faire les mêmes modifications dans le fichier "breve.html", toujours sur la balise "#TEXTE" ;

5. Enregistre les modifications de tous ces fichiers, vide le cache de Spip (configuration -> vider le cache -> vider le cache), vide le cache du navigateur également.

6. Pour utiliser cette solution, rien de plus simple, lors de la rédaction des articles et/ou brèves, il faut utiliser les raccourcis "[[|" et "|]]" pour entourer les notes de bas de page longues, qu'on souhaite afficher en entier lors du survol de la souris sur le lien dans le texte, lien qui, par ailleurs, reste tout-à-fait opérationnel pour se rendre à la note de bas de page correspondante.

Le raccourcis de cette méthode se compose de deux crochets "[" et d'une barre verticale "|", qui s'obtient par la combinaison des touches "alt + shift + L" (sur Mac et pour un clavier Azerty, je ne sais pas pour les autres plate-formes ni claviers, à chercher si c'est ton cas...)

Tu peux évidemment continuer à utiliser les raccourcis originaux de Spip pour les notes de bas de page "normales" (deux crochets ouvrants et fermants), le filtre ne les converti pas, il s'occupe uniquement des raccourcis composés d'une barre verticale "|", donc tu as les deux possibilités selon la longueur du texte à afficher.

NOTE !
Le texte de la note s'affiche dans un bloc formaté comme une info-bulle à hauteur du lien de la note dans le texte, mais il se peut qu'il ne soit pas vraiment centré horizontalement dans la colonne, il faudra alors modifier les marges gauche ou droite, dans la feuille de style correspondante, pour régler l'affichage.

ATTENTION !
Cette solution n'inhibe pas l'info-bulle originale du lien, il s'affiche en même temps que notre info-bulle, parfois en la masquant suivant la position du texte, mais à la différence de notre méthode, qui reste affichée autant de temps que la souris survole le lien, l'info-bulle originale disparaît au bout de quelques secondes.

Voilô... c'est la solution la plus simple et rapide à intégrer que je peux te proposer, il y a bien-sûr d'autres pistes possibles, avec du JavaScript par exemple, mais c'est un peu plus complexe à mettre en oeuvre pour un résultat pas forcément bien meilleur.

Tiens-moi au courant Stp... à+ smile


Fredo d;o)
"Un pas à la fois me suffit..." (Gandhi)

Hors ligne

 

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 552

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 553

#3 27-04-2008 20:58:08

vincentf
Novice
Date d'inscription: 27-04-2008
Messages: 7

Re: Affichage des notes de bas de page en intégralité par mouseover

ça marche super.
L'idéal serait désormais d'oter l'infobulle initiale qui ne sert plus à rien.
Si tu as une piste à ce sujet, n'hésite pas.
Bien merci en tout cas !

Vincent

http://www.oeil-cynique.org

Hors ligne

 

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 552

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 553

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 492

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 614

#4 28-04-2008 00:45:30

FredoMkb
Guide
Date d'inscription: 01-11-2006
Messages: 372
Site web

Re: Affichage des notes de bas de page en intégralité par mouseover

Re...

vincentf a écrit:

L'idéal serait désormais d'oter l'infobulle initiale qui ne sert plus à rien.
Si tu as une piste à ce sujet, n'hésite pas.

Avec un zeste de JavaScript ça pourrait fonctionner, voici une piste :

1. Édite le fichier Php "mes_fonctions.php" ;

2. Modifie le filtre "mgs_infobulle" en remplaçant la ligne de code suivante :

Code:

$lienDebut = '<span class="infobulle">[[';

Par celle-ci :

Code:

$lienDebut = '<span class="infobulle" onmouseover="this.childNodes[1].setAttribute(\'title\', \'\');">[[';

3. Enregistre les modifications, vide le cache de Spip, recharge les pages...

Voilô Vincent, maintenant, tous les visiteurs de ton site qui ont JavaScript activé sur leur navigateur, ne verront pas l'info-bulle originale...

Tiens-moi au courant Stp... à+ :-)


Fredo d;o)
"Un pas à la fois me suffit..." (Gandhi)

Hors ligne

 

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 552

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 553

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 537

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sda/3/a/fredomkb/forum/include/parser.php on line 614

#5 28-04-2008 11:57:05

FredoMkb
Guide
Date d'inscription: 01-11-2006
Messages: 372
Site web

Re: Affichage des notes de bas de page en intégralité par mouseover

Vincent,

Suite à cet échange, j'ai un peu formalisé tout ça et je propose désormais un filtre pour que tous les autres squelette Spip puissent aussi en bénéficier.

Voici l'article de présentation et d'explication du filtre : Note Bulle 1.0

Merci smile


Fredo d;o)
"Un pas à la fois me suffit..." (Gandhi)

Hors ligne

 
  • Affichage des notes de bas de page en intégralité par mouseover

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Suivre la vie du site RSS 2.0 | SPIP | Mgs MGS |