Changeset 85378 in spip-zone


Ignore:
Timestamp:
Oct 20, 2014, 11:15:35 AM (5 years ago)
Author:
cedric@…
Message:

Refactoring du JS et chargement async des photos dans le slider :

  • chargement du JS par getScript insere dans le modele et pas par affichage_final (plus robuste aux chargements ajax de slider)
  • JS encapsule dans un workspace, renommage raccourci des fonctions
  • le chargement de l'image suivante repere l'image active et veririe l'image courante et l'image suivante, il est appele avant/apres changement, ce qui rend robuste a la navigation non sequentielle par les pastilles de navigation
Location:
_plugins_/nivoslider/trunk
Files:
3 edited
1 moved

Legend:

Unmodified
Added
Removed
  • _plugins_/nivoslider/trunk/javascript/nivoslider.init.js

    r75935 r85378  
    1 function nivoslider_load_next_img(slider){
    2         var toload = jQuery("img:not(.loaded)[data-src^=]",slider);
    3         if (toload.length) { toload = toload.eq(0); toload.attr('src',toload.attr('data-src')).attr('data-src','').addClass('loaded');}
    4 }
    5 jQuery(function() {
    6         jQuery('.nivoSlider').each(function(){
    7                 var me=jQuery(this);
    8                 var options=eval('options='+me.attr('data-slider')+';');
    9                 if (options){
    10                         options = jQuery.extend({
    11                                         afterLoad: function(){nivoslider_load_next_img(me)},
    12                                   afterChange: function(){nivoslider_load_next_img(me)}
    13                                 },options);
    14                         me.nivoSlider(options);
     1var nivosliderloader;
     2(function($){
     3        function load_next(slider){
     4                var vars = slider.data('nivo:vars');
     5                var $imgs = $("img",slider);
     6                for(var i=vars.currentSlide; i<vars.currentSlide+2; i++) {
     7                        var $img = $imgs.eq(i);
     8                        if ($img.length  && $img.is(':not(.loaded)[data-src]')){
     9                                $img.attr('src',$img.attr('data-src')).attr('data-src','').addClass('loaded');
     10                        }
    1511                }
    16         });
    17 });
     12        }
     13        function init(){
     14                $('.nivoSlider').each(function(){
     15                        var me=$(this);
     16                        var options=eval('options='+me.attr('data-slider')+';');
     17                        if (options){
     18                                options = $.extend({
     19                                                afterLoad: function(){load_next(me)},
     20                                          afterChange: function(){load_next(me)},
     21                                          beforeChange: function(){load_next(me)}
     22                                        },options);
     23                                me.nivoSlider(options);
     24                        }
     25                });
     26        }
     27        if (typeof nivosliderloader=="undefined"){
     28                nivosliderloader = jQuery.getScript(nivosliderpath,function(){
     29                        init(); // init immediate des premiers sliders dans la page
     30                        $(init); // init exhaustive de tous les sliders
     31                        onAjaxLoad(init); // init lors d'un load ajax
     32                });
     33        }
     34})(jQuery);
  • _plugins_/nivoslider/trunk/modeles/nivoslider_base.html

    r81561 r85378  
    119119        ]</BOUCLE_doc>
    120120        </div>
     121        [<script>/*<!\[CDATA\[*/var nivosliderpath = '[(#CHEMIN{javascript/jquery.nivo.slider.pack.js}|timestamp)]';
     122        (#INCLURE{javascript/nivoslider.init.js}|compacte{js})/*\]\]>*/</script>]
    121123</div>
    122124</B_doc>
  • _plugins_/nivoslider/trunk/nivoslider_fonctions.php

    r85377 r85378  
    1414        $flux .= '<link rel="stylesheet" href="'.$css.'" type="text/css" media="all" />';
    1515        return $flux;
    16 }
    17 
    18 function nivoslider_affichage_final($texte){
    19         if (($GLOBALS['html'] OR test_espace_prive())
    20           AND strpos($texte,"nivoSlider")!==false
    21                 AND stripos($texte,"</script>")
    22           AND $p = stripos($texte,"</body>")
    23         ){
    24                 $js = find_in_path('javascript/jquery.nivo.slider.pack.js');
    25                 lire_fichier(find_in_path('javascript/nivoslider.init.js'),$init);
    26                 $ins = '<script type="text/javascript">/*<![CDATA[*/
    27 if (typeof jQuery.fn.nivoSlider=="undefined") jQuery.getScript("'.$js.'",function(){'.$init.'});/*]]>*/</script>';
    28                 $texte = substr_replace($texte,$ins,$p,0);
    29         }
    30         return $texte;
    3116}
    3217
  • _plugins_/nivoslider/trunk/paquet.xml

    r85182 r85378  
    22        prefix="nivoslider"
    33        categorie="multimedia"
    4         version="3.1.5"
     4        version="3.2.0"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.0.*]"
     
    1717
    1818        <pipeline nom="insert_head_css" />
    19         <pipeline nom="affichage_final" />
    2019        <pipeline nom="header_prive_css" action="insert_head_css" />
    21         <pipeline nom="affichage_final_prive" action="affichage_final" />
    2220
    2321</paquet>
Note: See TracChangeset for help on using the changeset viewer.