Changeset 73537 in spip-zone


Ignore:
Timestamp:
Jun 12, 2013, 1:34:30 PM (8 years ago)
Author:
kent1@…
Message:

On procède un peu différemment, on clone la table des matières pour en créer une flottante pour éviter des changements de taille de la page.

On ne se préoccupe plus d'ancres douces car on ne modifie pas le comportement des liens de la table des matières mais du li conteneur.

Version 2.2.2

Location:
_plugins_/table_matieres/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/table_matieres/trunk/javascript/table_matieres.js

    r73533 r73537  
    4646var tdm_flottante_init = function(){
    4747        if(typeof(tdm_flottante) != 'undefined' && tdm_flottante && $("#tdm").size() == 1){
    48                 var titres_offset = limite_bas = limite_tdm = false, tdm = $("#tdm");
     48                var titres_offset = limite_bas = limite_tdm = false, tdm = $("#tdm"),
     49                        newtdm_clone = $('#tdm').clone().addClass('tdm').addClass('tdm_clone').hide();
     50                $('#tdm').parents("div:not(.encart)").eq(0).prepend(newtdm_clone);
     51                var newtdm = $('.tdm_clone');
    4952               
    50                 var tdm_scroll = function(){
    51                         var offset = tdm.parents("div:not(.encart)").eq(0).offset(), tdm_size = tdm.height();
     53                var tdm_scroll = function(e){
     54                        var offset = tdm.parents("div:not(.encart)").eq(0).offset();
    5255                        if(offset){
    5356                                var limite_tdm = offset.top,
     
    5659                                        top = $(window).scrollTop();
    5760                                if((top >= limite_tdm) && (pos_bas <= limite_bas) && (top < limite_bas)){
    58                                         if(tdm.is(':hidden')) tdm.show();
     61                                        if(newtdm.is(':hidden')) newtdm.show();
    5962                                        /**
    6063                                         * Initialisation si première fois
    6164                                         */
    62                                         if(!tdm.hasClass("tdm_flottant")){
     65                                        if(!newtdm.hasClass("tdm_flottant")){
    6366                                                $('h3 a.tdm').hide();
    64                                                 tdm.addClass("tdm_flottant");
    65                                                 var tdm_width = tdm.width();
    66                                                 tdm.css({"position": "fixed", "top": 0, "width": tdm_width+"px","z-index":"999"});
    67                                                 $('h2',tdm).addClass('active');
    68                                                 $('li a',tdm).css({'display':'block'});
    69                                                 $('.active,h2',tdm).css({'cursor':'pointer'}).unbind('click').click(function(){
    70                                                         $('li:not(.active)',tdm).toggle();
     67                                                newtdm.addClass("tdm_flottant");
     68                                                var tdm_width = newtdm.width();
     69                                                newtdm.css({"position": "fixed", "top": 0, "width": tdm_width+"px","z-index":"999"});
     70                                                $('h2',newtdm).addClass('active');
     71                                                $('li a',newtdm).css({'display':'block'});
     72                                                $('.active,h2',newtdm).css({'cursor':'pointer'}).unbind('click').click(function(){
     73                                                        $('li:not(.active),h2:not(.active)',newtdm).toggle();
    7174                                                        return false;
    7275                                                });
     
    7477                                        if(!titres_offset){
    7578                                                titres_offset = [],
    76                                                 tdm.parents("div:not(.encart)").eq(0).find('h3').each(function(i, titre) {
     79                                                newtdm.parents("div:not(.encart)").eq(0).find('h3').each(function(i, titre) {
    7780                                                        titres_offset.push($(titre).offset().top.toFixed());
    7881                                                });
     
    8184                                        var highlighted = false;
    8285                                        for (var i = 0, c = titres_offset.length; i < c; i++) {
    83                                                 $('li,h2', tdm).removeClass('active');
    84                                                 if (titres_offset[i]-tdm.height() >= top) {
    85                                                         if((i-1) == -1) highlighted = $('h2', tdm).addClass('active');
    86                                                         else highlighted = $('li:eq('+(i-1)+')', tdm).addClass('active');
     86                                                $('li,h2', newtdm).removeClass('active');
     87                                                if (titres_offset[i]-newtdm.height() >= top) {
     88                                                        if((i-1) == -1) highlighted = $('h2', newtdm).addClass('active');
     89                                                        else highlighted = $('li:eq('+(i-1)+')', newtdm).addClass('active');
    8790                                                        break;
    8891                                                }
    8992                                        }
    9093                                        if(!highlighted)
    91                                                 highlighted = $('li:eq('+(titres_offset.length-1)+')', tdm).addClass('active');
    92                                         $('li:not(.active),h2:not(.active)',tdm).hide();
    93                                         $('.active',tdm).show();
    94                                         var tdm_active_click = function(e){
    95                                                 if($('li:not(:visible)',tdm).size() > 0){
     94                                                highlighted = $('li:eq('+(titres_offset.length-1)+')', newtdm).addClass('active');
     95                                        $('li:not(.active),h2:not(.active)',newtdm).hide();
     96                                        $('.active',newtdm).show();
     97                                        if($('li:not(:visible)',newtdm).size() > 0)
     98                                                $('.active',newtdm).click(function(e){
    9699                                                        e.preventDefault();
    97100                                                        e.stopPropagation();
    98                                                         $('*:not(:visible)',tdm).show();
     101                                                        $('*:not(:visible)',newtdm).show();
    99102                                                        return false;
    100                                                 }
    101                                         }
    102                                         $('.active a',tdm).unbind('click').click(tdm_active_click);
     103                                                });
    103104                                }
    104                                 if(($(window).scrollTop() < limite_tdm) && tdm.hasClass("tdm_flottant")){
    105                                         $('*:hidden',tdm).add('h3 a.tdm').show();
    106                                         $('.active,h2',tdm).css({'cursor':''}).removeClass('active').unbind('click');
    107                                         $('li a',tdm).css({'display':''});
    108                                         tdm.removeClass("tdm_flottant").css({'position': '', 'width':'','z-index':'','top':''});
    109                                         if(typeof(ancre_douce_init) == 'function')
    110                                                 ancre_douce_init();
    111                                 }else if((pos_bas > limite_bas) && tdm.is(':visible'))
    112                                         tdm.hide();
     105                                if(($(window).scrollTop() < limite_tdm) && newtdm.hasClass("tdm_flottant")){
     106                                        $('*:hidden',newtdm).add('h3 a.tdm').show();
     107                                        $('.active,h2',newtdm).css({'cursor':''}).removeClass('active').unbind('click');
     108                                        $('li a',newtdm).css({'display':''});
     109                                        newtdm.removeClass("tdm_flottant").css({'position': '', 'width':'','z-index':'','top':''}).hide();
     110                                }else if((pos_bas > limite_bas) && newtdm.is(':visible'))
     111                                        newtdm.hide();
    113112                        }
    114113                }
  • _plugins_/table_matieres/trunk/paquet.xml

    r73533 r73537  
    22        prefix="tablematieres"
    33        categorie="edition"
    4         version="2.2.1"
     4        version="2.2.2"
    55        etat="stable"
    66        compatibilite="[2.0.0;3.0.99]"
  • _plugins_/table_matieres/trunk/plugin.xml

    r73534 r73537  
    1212                </multi>
    1313        </slogan>
    14         <version>2.2.1</version>
     14        <version>2.2.2</version>
    1515        <prefix>tablematieres</prefix>
    1616        <fonctions>tablematieres_fonctions.php</fonctions>
Note: See TracChangeset for help on using the changeset viewer.