Ignore:
Timestamp:
11/19/12 12:00:08 (7 years ago)
Author:
kent1
Message:

On passe en 1.2.4

Amélioration des raccourcis clavier en html5 (touches L et M)

Beaucoup d'améliorations pour la version flash

Location:
plugins_spip/html5/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • plugins_spip/html5/trunk/css/html5_controls.css

    r7142 r7154  
    1616.media_wrapper *{
    1717        outline:none;
     18        -webkit-transition:none;
     19        -moz-transition:none;
     20        -o-transition:none;
    1821}
    1922
  • plugins_spip/html5/trunk/javascript/mediaspip_fallback_flash.js

    r7152 r7154  
    44 * HTML5 to fallback flash
    55 *
    6  * $version : 1.2.3
     6 * $version : 1.2.4
    77 * © GNU/GPL v3 - kent1 (http://kent1.info - kent1@arscenic.info)
    88 * cf : http://www.mediaspip.net/technical-documentation/plugins-used-by-mediaspip/html5-player-video-sound-media/
     
    1313                cookies = (typeof($.cookie) == 'function'),
    1414                timer = false;
    15        
     15
    1616        $.extend($.fn, {
    1717                ms_fallback_flash : function(options) {
     
    3939                        liens = [];
    4040                       
    41                         if(media.is('audio') > 0)
     41                        if(media.is('audio'))
    4242                                var isSound = true, isVideo = false;
    4343                        else
     
    104104                                wrapper.height(height).width(width).html(lecteur);
    105105                               
    106                             var controls = wrapper.find('.controls');
     106                                var controls = wrapper.find('.controls');
    107107                           
    108                             /**
    109                              * Si le wrapper est vraiment petit, pas de messages
    110                              */
    111                             if(wrapper.height() < 100) options.messages = false;
    112                            
    113                             wrapper[0].options = options;
    114                            
    115                             if(options.poster && isSound){
    116                                 var width = wrapper.find('.html5_cover img').width(),
    117                                         height = wrapper.find('.html5_cover img').height();
    118                                 wrapper.height(height).width(width).find('.flowplayer').height(height).width(width);
    119                             }
    120                            
    121                             var allowfullscreen = isSound ? false : true,
    122                                 resized = false,
    123                                 media_options = {
     108                                /**
     109                                 * Si le wrapper est vraiment petit, pas de messages
     110                                 */
     111                                if(wrapper.height() < 100) options.messages = false;
     112
     113                                wrapper[0].options = options;
     114
     115                                if(options.poster && isSound){
     116                                        var width = wrapper.find('.html5_cover img').width(),
     117                                                height = wrapper.find('.html5_cover img').height();
     118                                        wrapper.height(height).width(width).find('.flowplayer').height(height).width(width);
     119                                }
     120                            var timer = null, bufferfull = null;
     121                                var allowfullscreen = isSound ? false : true,
     122                                        media_options = {
     123                                                onLoad:function(){
     124                                                        this.options = options;
     125                                                var player = this;
     126                                                        wrapper.removeClass('loading').addClass('paused');
     127                                                        controls.find('.play_pause_button').attr('title',ms_player_lang.bouton_lire).unbind('click').click(function(e){
     128                                                                if (player.isLoaded())
     129                                                                        player.toggle();
     130                                                                else player.load();
     131                                                        });
     132                                                        if(isSound){
     133                                                                wrapper.find('.flowplayer').click(function(){
     134                                                                        if (player.isLoaded()) player.toggle();
     135                                                                        else player.play();
     136                                                                });
     137                                                                if(!wrapper[0].options.autoplay){
     138                                                                        /**
     139                                                                         * Play / pause pour récupérer les metadonnées
     140                                                                         */
     141                                                                        this.forceplayformetadata = true;
     142                                                                        this.mute();
     143                                                                        if(!this.options.muted){
     144                                                                                this.forcemuteformetadata = true;
     145                                                                        }
     146                                                                        this.play();
     147                                                                }
     148                                                        }
     149                                                        if($.inArray('volume',options.boutons_caches) == '-1' && !options.muted_bloque){
     150                                                        controls.find('.volume_button').click(function(e){
     151                                                                var status = player.getStatus();
     152                                                                        if(status.muted){
     153                                                                                if(cookies && options.cookie_volume) $.cookie('ms_volume_muted',null);
     154                                                                                if(typeof(player.slider_volume) == 'object') player.slider_volume.slider('enable');
     155                                                                                var volume_title = ms_player_lang.bouton_volume+' ('+Math.floor(player.getVolume())+'%)';
     156                                                                                controls.find('.volume_button').removeClass('muted').attr('title',volume_title);
     157                                                                                player.unmute();
     158                                                                                wrapper.ms_messages('mute',ms_player_lang.statut_unmute,options);
     159                                                                        }else{
     160                                                                                if(cookies && options.cookie_volume) $.cookie('ms_volume_muted','muted');
     161                                                                                if(typeof(player.slider_volume) == 'object') player.slider_volume.slider('disable');
     162                                                                                controls.find('.volume_button').addClass('muted').attr('title',ms_player_lang.bouton_volume_muted);
     163                                                                                player.mute();
     164                                                                                wrapper.ms_messages('mute',ms_player_lang.statut_mute,options);
     165                                                                        }
     166                                                                });
     167                                                        }
     168                                                        wrapper.flow_resize_controls();
     169                                        },
     170                                                onStart:function(clip) {
     171                                                        var duration = false;
     172                                                        var player = this, status_start = player.getStatus();
     173                                                        if(slider){
     174                                                                controls.find('.progress_indicator').hide();
     175                                                                if($.inArray('volume',options.boutons_caches) == '-1'){
     176                                                                        player.slider_volume = controls.find('.volume_slider').slider({
     177                                                                                value:100,
     178                                                                                orientation: options.volume_slider_orientation,
     179                                                                                min:0,
     180                                                                                max:100,
     181                                                                                disabled: (options.volume_bloque) ? true : false,
     182                                                                                range: "min",
     183                                                                                slide: function(event,ui){
     184                                                                                        /**
     185                                                                                         * On change le volume
     186                                                                                         */
     187                                                                                        if((ui.value <= 100) && (ui.value >= 0)){
     188                                                                                                player.setVolume(ui.value);
     189                                                                                                wrapper.flow_change_volume(ui.value,player.slider_volume,false,options);
     190                                                                                                if(cookies && options.cookie_volume) $.cookie('ms_volume', ui.value/100);
     191                                                                                        }
     192                                                                                },
     193                                                                                stop: function(event,ui){
     194                                                                                        /**
     195                                                                                         * On change le volume et on le sauvegarde dans le cookie si nécessaire
     196                                                                                         */
     197                                                                                        if((ui.value <= 100) && (ui.value >= 0)){
     198                                                                                                player.setVolume(ui.value);
     199                                                                                                wrapper.flow_change_volume(ui.value,player.slider_volume,false,options);
     200                                                                                                if(cookies && options.cookie_volume) $.cookie('ms_volume', ui.value/100);
     201                                                                                        }
     202                                                                                }
     203                                                                        });
     204                                                                }
     205                                                }
     206                                                       
     207                                                        wrapper.flow_resize_controls();
     208                                               
     209                                                        wrapper.dblclick(function(e){ return false; });
     210                                                       
     211                                                bufferfull = false;
     212                                                var statustime = 0;
     213                                                player.slider_done = false;
     214               
     215                                                // begin timer
     216                                                var timer_function = function(){
     217                                                        if(typeof(clip.duration) == 'undefined') return;
     218                                                       
     219                                                        var statustime = player.getStatus().time;
     220                                                        if (typeof(statustime) == 'undefined') {
     221                                                                clearInterval(timer);
     222                                                                return;
     223                                                        }
     224                                                       
     225                                                        if((typeof(statustime) != 'undefined')){
     226                                                                var duree = player.former_duration;
     227                                                                /**
     228                                                                 * On doit le mettre ici car on n'a pas de duration sur les mp3 dÚs le load
     229                                                                 */
     230                                                                if(!player.slider_done && slider){
     231                                                                        var replay = false;
     232                                                                                this.slider_control = controls.find('.progress_back').slider({
     233                                                                                        min: 0,
     234                                                                                        max: player.former_duration ? player.former_duration : 100,
     235                                                                                        range: "min",
     236                                                                                        start: function(event,ui){
     237                                                                                                if(player.isPlaying()){
     238                                                                                                        replay = true;
     239                                                                                                }else{
     240                                                                                                        replay = false;
     241                                                                                                }
     242                                                                                        },
     243                                                                                        slide: function(event,ui){
     244                                                                                                if(isSound){
     245                                                                                                        if(replay){
     246                                                                                                                player.seek(ui.value);
     247                                                                                                        }
     248                                                                                                        else{
     249                                                                                                                player.play();
     250                                                                                                                player.seek(ui.value);
     251                                                                                                        }
     252                                                                                                }
     253                                                                                        },
     254                                                                                        stop: function(event,ui){
     255                                                                                                if(replay){
     256                                                                                                        player.resume();
     257                                                                                                        player.seek(ui.value);
     258                                                                                                }
     259                                                                                                else{
     260                                                                                                        if(isSound){
     261                                                                                                                player.play();
     262                                                                                                                player.seek(ui.value);
     263                                                                                                                player.pause();
     264                                                                                                        }else{
     265                                                                                                                player.play();
     266                                                                                                                player.topause = true;
     267                                                                                                                player.seek(ui.value);
     268                                                                                                        }
     269                                                                                                }
     270                                                                                        }
     271                                                                                });
     272                                                                                player.slider_done = true;
     273                                                                }
     274                                                                if(wrapper.find(".remaining_time").html() == '-00:00')
     275                                                                                wrapper.flow_resize_controls();
     276                                                                if (!player.isPaused()) {
     277                                                                        var timer2 = statustime / player.former_duration * 100,
     278                                                                                        position = Math.round(timer2);
     279                                                                                wrapper.find('.progress_elapsed_time,.progress_back > .ui-slider-range').css('width',position+'%');
     280                                                                                wrapper.find('.progress_indicator,.progress_back > .ui-slider-handle').css('left',position+'%');
     281                                                                                wrapper.find(".elapsed_time").html(ms_second_to_time(statustime));
     282                                                                                if(wrapper.find(".remaining_time").is('.remaining'))
     283                                                                                        wrapper.find(".remaining_time").html('-'+ms_second_to_time(player.former_duration-statustime));
     284                                                                                wrapper.flow_resize_controls();
     285                                                                }
     286                                                                if(!bufferfull){
     287                                                                        var buffer = ms_anything_to_percent(player.getStatus().bufferEnd,player.former_duration);
     288                                                                        if(buffer > 100) buffer = 100;
     289                                                                        if(buffer == 100) bufferfull = true;
     290                                                                                wrapper.find('.progress_buffered').css('width',buffer+'%');
     291                                                                }
     292                                                        }
     293                                                };
     294                                               
     295                                                // clear previous timer
     296                                                clearInterval(this.timer);
     297                                                this.timer = setInterval(timer_function, 500);
     298                                                wrapper.find(".remaining_time").unbind('click').click(function(e){
     299                                                                if($(this).is('.remaining'))
     300                                                                        $(this).removeClass('remaining').addClass('total_time')
     301                                                                                .attr('title',ms_player_lang.info_total)
     302                                                                                .html(ms_second_to_time(Math.floor(player.former_duration)));
     303                                                                else
     304                                                                        $(this).removeClass('total_time').addClass('remaining')
     305                                                                                .attr('title',ms_player_lang.info_restant)
     306                                                                                .html('-'+ms_second_to_time(Math.floor(player.former_duration) - statustime));
     307                                                                wrapper.flow_resize_controls();
     308                                                });
     309                                        },
     310                                        onClipAdd :function(clip){},
     311                                        onError:function(error){},
     312                                        onUnload:function(error){},
     313                                        onBeforeKeyPress:function(e){
     314                                                if(e == 76){
     315                                                        if($.inArray('loop',this.options.boutons_caches) == '-1'){
     316                                                                controls.find('.loop_button').click();
     317                                                }
     318                                                        return false;
     319                                                }
     320                                        },
     321                                        onKeyPress: function(e){
     322                                                if(e == 39 || e == 37){
     323                                                        if(this.isPaused()){
     324                                                                this.topause = true;
     325                                                                this.play();
     326                                                        }
     327                                                }
     328                                                if(e == 70 && !this.isFullscreen()){
     329                                                        this.toggleFullscreen();
     330                                                }
     331                                                if(e == 38 || e == 40){
     332                                                        if(!this.options.volume_bloque){
     333                                                                var volume = this.getVolume(),
     334                                                                                volume_diff = (e == 38) ? '10' : '-10',
     335                                                                                volume_new = Math.round((volume + parseFloat(volume_diff))*10)/10;
     336                                                                wrapper.flow_change_volume(volume_new,this.slider_volume,false,this.options);
     337                                                        }
     338                                                }
     339                                                if(e == 186 || e == 77){
     340                                                        if($.inArray('volume',this.options.boutons_caches) == '-1' && !this.options.muted_bloque){
     341                                                                wrapper.find('.volume_button').click();
     342                                                        }
     343                                                }
     344                                        },
    124345                                clip:{
    125346                                        url:liens[0],
     
    138359                                                                        clip.looped = false;
    139360                                                                        $(this).attr('title',ms_player_lang.bouton_loop);
    140                                                                         wrapper.ms_messages('loop',ms_player_lang.statut_unloop,options);
    141                                                                         wrapper.removeClass('loop');
     361                                                                        wrapper.removeClass('loop').ms_messages('loop',ms_player_lang.statut_unloop,options);
    142362                                                                }else{
    143363                                                                        clip.looped = true;
    144364                                                                        $(this).attr('title',ms_player_lang.bouton_loop_looped);
    145                                                                         wrapper.ms_messages('loop',ms_player_lang.statut_loop,options);
    146                                                                         wrapper.addClass('loop');
     365                                                                        wrapper.addClass('loop').ms_messages('loop',ms_player_lang.statut_loop,options);
    147366                                                                }
    148367                                                                });
     
    156375                                                                wrapper.find(".elapsed_time").html(ms_second_to_time(0));
    157376                                        }else
    158                                                 wrapper.flow_progress_resize();
     377                                                wrapper.flow_resize_controls();
    159378                                        wrapper.flow_play_pause('play',options);
    160379                                },
    161380                                onCuepoint:function(content) {},
    162381                                onMetaData:function(clip) {
    163                                         if(isVideo){                                           
     382                                        if(isVideo){
    164383                                                var ratio_video = clip.metaData.width/clip.metaData.height;
    165384                                                        wrapper[0].ratio = ratio_video;
     
    175394                                                                        height_final = (clip.metaData.height*ratio).toFixed();
    176395                                                                wrapper.add(wrapper).animate({height:height_final+'px',width:'100%'},500,function(){
    177                                                                         wrapper.flow_progress_resize();
     396                                                                        wrapper.flow_resize_controls();
    178397                                                                });
    179398                                                        }else if(!wrapper.hasClass('noresize') || options.movieSize != 'noresize'){
     
    193412                                                                wrapper.find(".elapsed_time").html(ms_second_to_time(0));
    194413                                                                this.former_duration = clip.duration;
    195                                                                 wrapper.flow_progress_resize();
     414                                                                wrapper.flow_resize_controls();
    196415                                        }
    197416                                        if(this.forceplayformetadata){
     
    207426                                    onBeforeFinish: function(clip) {},
    208427                                onFinish:function(clip){
    209                                         wrapper.flow_play_pause('stop',options);
    210                                         if(clip.looped) this.play();
     428                                        if(clip.looped) {this.play(clip);}
     429                                        else wrapper.flow_play_pause('stop',options);
    211430                                },
    212431                                    onPause:function(clip){
     
    224443                                                                        wrapper.find(".remaining_time").html(duration);
    225444                                                wrapper.find(".elapsed_time").html(ms_second_to_time(this.getStatus().time || 0));
    226                                                                 wrapper.flow_progress_resize();
     445                                                                wrapper.flow_resize_controls();
    227446                                        }
    228447                                        wrapper.flow_play_pause('play',options);
    229448                                },
    230449                                onBeforeSeek:function(clip,time){
    231                                                         //wrapper.addClass('seeking').find('.play_pause_button').attr('title',ms_player_lang.bouton_seeking);
    232                                                         //if(this.isPlaying()) clip.status = 'playing';
    233                                                         //else if(this.isPaused()) clip.status = 'paused';
     450                                        this.former_time = this.getStatus().time;
     451                                                        wrapper.addClass('seeking').find('.play_pause_button').attr('title',ms_player_lang.bouton_seeking);
     452                                                        if(this.isPlaying()) clip.status = 'playing';
     453                                                        else if(this.isPaused()) clip.status = 'paused';
    234454                                },
    235455                                onSeek:function(clip,time){
    236456                                        var time_affiche = ms_second_to_time(time);
    237                                                         wrapper.removeClass('seeking').ms_messages('seek_to',ms_player_lang.statut_seek_to+' '+time_affiche,options);
     457                                        wrapper.removeClass('seeking');
     458                                        if(this.former_time < time)
     459                                                wrapper.ms_messages('seek_to',ms_player_lang.statut_seek_to+' '+time_affiche,options);
     460                                        else
     461                                                wrapper.ms_messages('seek_to',ms_player_lang.statut_seek_back+' '+time_affiche,options);
    238462                                        if(clip.status == 'paused')
    239463                                                                wrapper.find('.play_pause_button').removeClass('pause').attr('title',ms_player_lang.bouton_pause);
    240464                                                        else
    241                                                                 wrapper.find('.play_pause_button').addClass('pause').attr('title',ms_player_lang.bouton_lire);                                 
     465                                                                wrapper.find('.play_pause_button').addClass('pause').attr('title',ms_player_lang.bouton_lire);
     466                                        if(this.topause){
     467                                                this.topause = false;
     468                                                this.pause();
     469                                        }
     470                                        wrapper.find(".elapsed_time").html(time_affiche);
     471                                                        if(wrapper.find(".remaining_time").is('.remaining'))
     472                                                                wrapper.find(".remaining_time").html('-'+ms_second_to_time(clip.duration-time));
     473                                                       
     474                                                        var width = time/clip.duration*100;
     475                                                        wrapper.find('.progress_elapsed_time,.progress_back > .ui-slider-range').css('width',width+'%');
     476                                                        wrapper.find('.progress_indicator,.progress_back > .ui-slider-handle').css('left',width+'%');
     477                                        wrapper.flow_resize_controls();
    242478                                },
    243479                                onStop:function(){
     
    274510                                }
    275511                            }, media_options);
    276                            
    277                             var timer = null, bufferfull = null;
    278 
    279                             wrapper.find('.flowplayer').flowplayer().each(function() {
    280                                 var duration = false;
    281                                 this.onLoad(function() {
    282                                         var player = this;
    283                                                 wrapper.removeClass('loading').addClass('paused');
    284                                                 controls.find('.play_pause_button').attr('title',ms_player_lang.bouton_lire).unbind('click').click(function(e){
    285                                                         e.preventDefault();
    286                                                         if (player.isLoaded()) player.toggle();
    287                                                         else player.play();     
    288                                                 });
    289                                                 if(isSound){
    290                                                         wrapper.find('.flowplayer').click(function(){
    291                                                                 if (player.isLoaded()) player.toggle();
    292                                                                 else player.play();
    293                                                         });
    294                                                         wrapper.flow_progress_resize();
    295                                                         if(!wrapper[0].options.autoplay){
    296                                                                 /**
    297                                                                  * Play / pause pour récupérer les metadonnées
    298                                                                  */
    299                                                                 this.forceplayformetadata = true;
    300                                                                 var status = player.getStatus();
    301                                                                 if(!status.muted){
    302                                                                         this.forcemuteformetadata = true;
    303                                                                         player.mute();
    304                                                                 }
    305                                                                 this.play();
    306                                                         }
    307                                                 }
    308                                                 if($.inArray('volume',options.boutons_caches) == '-1' && !options.muted_bloque){
    309                                                 controls.find('.volume_button').click(function(e){
    310                                                         var status = player.getStatus();
    311                                                                 if(status.muted){
    312                                                                         if(cookies && options.cookie_volume) $.cookie('ms_volume_muted',null);
    313                                                                         if(typeof(player.slider_volume) == 'object') player.slider_volume.slider('enable');
    314                                                                         var volume_title = ms_player_lang.bouton_volume+' ('+Math.floor(player.getVolume())+'%)';
    315                                                                         controls.find('.volume_button').removeClass('muted').attr('title',volume_title);
    316                                                                         player.unmute();
    317                                                                         wrapper.ms_messages('mute',ms_player_lang.statut_unmute,options);
    318                                                                 }else{
    319                                                                         if(cookies && options.cookie_volume) $.cookie('ms_volume_muted','muted');
    320                                                                         if(typeof(player.slider_volume) == 'object') player.slider_volume.slider('disable');
    321                                                                         controls.find('.volume_button').addClass('muted').attr('title',ms_player_lang.bouton_volume_muted);
    322                                                                         player.mute();
    323                                                                         wrapper.ms_messages('mute',ms_player_lang.statut_mute,options);
    324                                                                 }
    325                                                         });
    326                                                 }
    327                                 });
    328                                
    329                                 this.onStart(function(clip) {
    330                                         var player = this, status_start = player.getStatus();
    331                                         if(slider){
    332                                                         controls.find('.progress_indicator').hide();
    333                                                         if($.inArray('volume',options.boutons_caches) == '-1'){
    334                                                                 player.slider_volume = controls.find('.volume_slider').slider({
    335                                                                         value:100,
    336                                                                         orientation: options.volume_slider_orientation,
    337                                                                         min:0,
    338                                                                         max:100,
    339                                                                         disabled: (options.volume_bloque) ? true : false,
    340                                                                         range: "min",
    341                                                                         slide: function(event,ui){
    342                                                                                 /**
    343                                                                                  * On change le volume
    344                                                                                  */
    345                                                                                 if((ui.value <= 100) && (ui.value >= 0)){
    346                                                                                         player.setVolume(ui.value);
    347                                                                                         wrapper.flow_change_volume(ui.value,player.slider_volume,false,options);
    348                                                                                         if(cookies && options.cookie_volume) $.cookie('ms_volume', ui.value/100);
    349                                                                                 }
    350                                                                         },
    351                                                                         stop: function(event,ui){
    352                                                                                 /**
    353                                                                                  * On change le volume et on le sauvegarde dans le cookie si nécessaire
    354                                                                                  */
    355                                                                                 if((ui.value <= 100) && (ui.value >= 0)){
    356                                                                                         player.setVolume(ui.value);
    357                                                                                         wrapper.flow_change_volume(ui.value,player.slider_volume,false,options);
    358                                                                                         if(cookies && options.cookie_volume) $.cookie('ms_volume', ui.value/100);
    359                                                                                 }
    360                                                                                
    361                                                                         }
    362                                                                 });
    363                                                         }
    364                                         }
    365                                                
    366                                                 wrapper.flow_progress_resize();
    367                                        
    368                                                 wrapper.dblclick(function(e){
    369                                                         return false;
    370                                                 });
    371                                                
    372                                         bufferfull = false;
    373                                         var statustime = 0;
    374                                         player.slider_done = false;
    375        
    376                                         // begin timer
    377                                         var timer_function = function(){
    378                                                 if(typeof(clip.duration) == 'undefined') return;
    379                                                
    380                                                 var statustime = player.getStatus().time;
    381                                                 if (typeof(statustime) == 'undefined') {
    382                                                         clearInterval(timer);
    383                                                         return;
    384                                                 }
    385                                                
    386                                                 if((typeof(statustime) != 'undefined')){
    387                                                         var duree = player.former_duration;
    388                                                         /**
    389                                                          * On doit le mettre ici car on n'a pas de duration sur les mp3 dÚs le load
    390                                                          */
    391                                                         if(!player.slider_done && slider){
    392                                                                 var replay = false;
    393                                                                         this.slider_control = controls.find('.progress_back').slider({
    394                                                                                 min: 0,
    395                                                                                 max: player.former_duration ? player.former_duration : 100,
    396                                                                                 range: "min",
    397                                                                                 start: function(event,ui){
    398                                                                                         if(player.isPlaying()){
    399                                                                                                 player.pause();
    400                                                                                                 replay = true;
    401                                                                                         }else
    402                                                                                                 replay = false;
    403                                                                                 },
    404                                                                                 slide: function(event,ui){
    405                                                                                         /**
    406                                                                                          * - On change les valeurs de temps
    407                                                                                          * - On fait avancer la barre de lecture sans lancer la lecture
    408                                                                                          */
    409                                                                                         var width = ui.value/player.former_duration*100;
    410                                                                                         controls.find('.progress_elapsed_time').css('width',width+'%');
    411                                                                                         var percent = width;
    412                                                                                         wrapper.find(".elapsed_time").html(ms_second_to_time(ui.value));
    413                                                                                         if(wrapper.find(".remaining_time").is('.remaining'))
    414                                                                                                 wrapper.find(".remaining_time").html('-'+ms_second_to_time(player.former_duration-ui.value));
    415                                                                                         wrapper.flow_progress_resize();
    416                                                                                 },
    417                                                                                 stop: function(event,ui){
    418                                                                                         /**
    419                                                                                          * On saute la lecture au bon endroit ?
    420                                                                                          */
    421                                                                                         var temps = ui.value;
    422                                                                                         wrapper.find(".elapsed_time").html(ms_second_to_time(temps));
    423                                                                                         if(wrapper.find(".remaining_time").is('.remaining'))
    424                                                                                                 wrapper.find(".remaining_time").html('-'+ms_second_to_time(player.former_duration-temps));
    425                                                                                         player.seek(temps);
    426                                                                                         if(replay) player.resume();
    427                                                                                         wrapper.flow_progress_resize();
    428                                                                                 }
    429                                                                         });
    430                                                                         player.slider_done = true;
    431                                                         }
    432                                                         if(wrapper.find(".remaining_time").html() == '-00:00')
    433                                                                         wrapper.flow_progress_resize();
    434                                                         if (!player.isPaused()) {
    435                                                                 var timer2 = statustime / player.former_duration * 100,
    436                                                                                 position = Math.round(timer2);
    437                                                                         wrapper.find('.progress_elapsed_time,.progress_back > .ui-slider-range').css('width',position+'%');
    438                                                                         wrapper.find('.progress_indicator,.progress_back > .ui-slider-handle').css('left',position+'%');
    439                                                                         wrapper.find(".elapsed_time").html(ms_second_to_time(statustime));
    440                                                                         if(wrapper.find(".remaining_time").is('.remaining'))
    441                                                                                 wrapper.find(".remaining_time").html('-'+ms_second_to_time(player.former_duration-statustime));
    442                                                                         wrapper.flow_progress_resize();
    443                                                         }
    444                                                         if(!bufferfull){
    445                                                                 var buffer = ms_anything_to_percent(player.getStatus().bufferEnd,player.former_duration);
    446                                                                 if(buffer > 100) buffer = 100;
    447                                                                 if(buffer == 100) bufferfull = true;
    448                                                                         wrapper.find('.progress_buffered').css('width',buffer+'%');
    449                                                         }
    450                                                 }
    451                                         };
    452                                        
    453                                         // clear previous timer
    454                                         clearInterval(timer);
    455                                         timer = setInterval(timer_function, 500);
    456                                         wrapper.find(".remaining_time").unbind('click').click(function(e){
    457                                                         if($(this).is('.remaining'))
    458                                                                 $(this).removeClass('remaining').addClass('total_time')
    459                                                                         .attr('title',ms_player_lang.info_total)
    460                                                                         .html(ms_second_to_time(Math.floor(player.former_duration)));
    461                                                         else
    462                                                                 $(this).removeClass('total_time').addClass('remaining')
    463                                                                         .attr('title',ms_player_lang.info_restant)
    464                                                                         .html('-'+ms_second_to_time(Math.floor(player.former_duration) - statustime));
    465                                                         wrapper.flow_progress_resize();
    466                                         });
    467                                 });
    468                                 this.onClipAdd(function(clip){});
    469                                 this.onError(function(error){});
    470                             });
    471512                        }
    472513                       
     
    506547                        }else{
    507548                                $(this).removeClass('paused').find('.play_pause_button').addClass('pause').attr('title',ms_player_lang.bouton_pause);
    508                                 $(this).ms_messages('play',ms_player_lang.statut_play,options);
     549                                $(this).ms_messages('play',ms_player_lang.statut_play,options)
    509550                        }
    510551                },
     
    512553                        if(slider && typeof(slider_volume == 'object')){
    513554                                slider_volume.slider({value:volume_new});
    514                                 $(this).ms_messages('pause',ms_player_lang.statut_pause,options);
     555                                //$(this).ms_messages('pause',ms_player_lang.statut_pause,options);
    515556                        }
    516557                        if((volume_new <= 100) && (volume_new >= 0)){
     
    539580                        }
    540581                },
    541                 flow_progress_resize : function(){
     582                flow_resize_controls : function(force){
    542583                        /**
    543584                         * Attention la série de isNaN est pour IE qui plante à ces endroits
     
    545586                        var buttons_right_width = 0;
    546587                    $(this).find('.buttons_right').children().each(function(){
    547                         if($(this).css('position') != 'absolute'){
     588                        if($(this).is(':visible') && $(this).css('position') != 'absolute'){
    548589                                if(!isNaN(parseFloat($(this).outerWidth())))
    549590                                        buttons_right_width += parseFloat($(this).outerWidth());
     
    555596                    });
    556597                    $(this).find('.buttons_right').width(buttons_right_width);
     598                   
    557599                        var width_container = $(this).width(),
    558600                                play_width = parseFloat($(this).find('.buttons_left').outerWidth());
     
    581623                        if(!isNaN(parseFloat($(this).find('.progress_bar').css('padding-left'))))
    582624                                progresswidth -= parseFloat($(this).find('.progress_bar').css('padding-left'));
    583 
     625                       
    584626                        $(this).find('.progress_bar').width(progresswidth);
    585627
    586                         var remaining_width = parseFloat($(this).find(".remaining_time").outerWidth());
    587                         if(!isNaN(parseFloat($(this).find(".remaining_time").css('margin-left'))))
    588                                 remaining_width += parseFloat($(this).find(".remaining_time").css('margin-left'));
    589                         if(!isNaN(parseFloat($(this).find(".remaining_time").css('margin-right'))))
    590                                 remaining_width += parseFloat($(this).find(".remaining_time").css('margin-right'));
    591                        
     628                        var remaining_width = 0;
     629                        if($(this).find(".remaining_time").is(':visible')){
     630                                remaining_width = parseFloat($(this).find(".remaining_time").outerWidth());
     631                                if(!isNaN(parseFloat($(this).find(".remaining_time").css('margin-left'))))
     632                                        remaining_width += parseFloat($(this).find(".remaining_time").css('margin-left'));
     633                                if(!isNaN(parseFloat($(this).find(".remaining_time").css('margin-right'))))
     634                                        remaining_width += parseFloat($(this).find(".remaining_time").css('margin-right'));
     635                        }
    592636                        var elapsed_width = parseFloat($(this).find(".elapsed_time").outerWidth());
    593637                        if(!isNaN(parseFloat($(this).find(".elapsed_time").css('margin-left'))))
     
    609653                        if(!isNaN(parseFloat($(this).find(".progress_back").css('padding-left'))))
    610654                                progressback_width -= parseFloat($(this).find(".progress_back").css('padding-left'));
     655                       
    611656                        $(this).find('.progress_back').width(progressback_width);
     657                        if(slider && progressback_width < 30 && !force){
     658                                var player = $(this).find('.flowplayer').flowplayer();
     659                                var wrapper = $(this);
     660                                player.each(function() {
     661                                        if(typeof(this.slider_volume) == 'object'){
     662                                                this.slider_volume.slider('option',{'orientation':'vertical'});
     663                                                wrapper.find('.volume_slider_container').removeClass('horizontal').addClass('vertical');
     664                                        }
     665                                });
     666                                wrapper.flow_resize_controls(true);
     667                        }else{
     668                                if($(this).find('.remaining_time').is(':hidden') && $(this).find('.loop_button').is(':visible') && progressback_width < 30){
     669                                        $(this).find('.loop_button').hide();
     670                                        $(this).flow_resize_controls(true);
     671                                }
     672                                else if($(this).find('.remaining_time').is(':visible') && progressback_width < 30){
     673                                        $(this).find('.remaining_time').hide();
     674                                        $(this).flow_resize_controls(true);
     675                                }
     676                                else if($(this).find('.remaining_time').is(':hidden') && progressback_width < 30){
     677                                        $(this).find('.progress_back').hide();
     678                                        return;
     679                                }
     680                                $(this).find('.progress_back').width(progressback_width);
     681                        }
    612682                }
    613683        });
  • plugins_spip/html5/trunk/javascript/mediaspip_player.js

    r7148 r7154  
    66 * avec fallback vers version flash pour flv/mp4/mp3/aac
    77 *
    8  * $version : 1.2.3
     8 * $version : 1.2.4
    99 * © GNU/GPL v3 - kent1 (http://kent1.info - kent1@arscenic.info)
    1010 * cf : http://www.mediaspip.net/technical-documentation/plugins-used-by-mediaspip/html5-player-video-sound-media/
     
    902902                                progresswidth = parseFloat(control.width())-parseFloat(play_width)-parseFloat(sound_width) - parseFloat(control.find('.progress_bar').css('border-left-width')) - parseFloat(control.find('.progress_bar').css('border-right-width'))-parseFloat(control.find('.progress_bar').css('margin-right')) - parseFloat(control.find('.progress_bar').css('margin-left')) - parseFloat(control.find('.progress_bar').css('padding-right')) - parseFloat(control.find('.progress_bar').css('padding-left'))-1;
    903903                        control.find('.progress_bar').width(progresswidth);
    904        
     904                       
    905905                        var remaining_width = control.find(".remaining_time").outerWidth()+parseFloat(control.find('.remaining_time').css('margin-left'))+parseFloat(control.find('.remaining_time').css('margin-right')),
    906                                 elapsed_width = control.find(".elapsed_time").outerWidth()+parseFloat(control.find('.elapsed_time').css('margin-left'))+parseFloat(control.find('.elapsed_time').css('margin-right')),
    907                                 progressback_width = progresswidth - elapsed_width - remaining_width - parseFloat(control.find('.progress_back').css('border-left-width')) - parseFloat(control.find('.progress_back').css('border-right-width'))-parseFloat(control.find('.progress_back').css('margin-right')) - parseFloat(control.find('.progress_back').css('margin-left')) - parseFloat(control.find('.progress_back').css('padding-right')) - parseFloat(control.find('.progress_back').css('padding-left'));
     906                                elapsed_width = control.find(".elapsed_time").outerWidth()+parseFloat(control.find('.elapsed_time').css('margin-left'))+parseFloat(control.find('.elapsed_time').css('margin-right'));
     907                       
     908                        if(control.find(".remaining_time").is(':hidden'))
     909                                remaining_width = 0;
     910                        var progressback_width = progresswidth - elapsed_width - remaining_width - parseFloat(control.find('.progress_back').css('border-left-width')) - parseFloat(control.find('.progress_back').css('border-right-width'))-parseFloat(control.find('.progress_back').css('margin-right')) - parseFloat(control.find('.progress_back').css('margin-left')) - parseFloat(control.find('.progress_back').css('padding-right')) - parseFloat(control.find('.progress_back').css('padding-left'));
    908911                       
    909912                        if(slider && progressback_width < 0 && !force){
     
    914917                                $(this).ms_resize_controls(true);
    915918                        }else{
     919                                if(control.find('.remaining_time').is(':hidden') && control.find('.loop_button').is(':visible') && progressback_width < 30){
     920                                        control.find('.loop_button').hide();
     921                                        control.ms_resize_controls(true);
     922                                }
     923                                else if(control.find('.remaining_time').is(':visible') && progressback_width < 30){
     924                                        control.find('.remaining_time').hide();
     925                                        $(this).ms_resize_controls(true);
     926                                }else if(control.find('.remaining_time').is(':hidden') && progressback_width < 30){
     927                                        control.find('.progress_back').hide();
     928                                        return;
     929                                }
    916930                                control.find('.progress_back').width(progressback_width);
    917931                        }
     
    10401054                                     * Active ou désactive le mode boucle (loop) sur le média en cours de lecture
    10411055                                     */
    1042                                         $('video,audio').each(function(){
    1043                                         if($('input:focus,textarea:focus').size() == 0){
    1044                                                 $(this).ms_loop();
    1045                                                 e.preventDefault();
    1046                                         }
    1047                                 });
     1056                                        if(media_hover && $('input:focus,textarea:focus').size() == 0){
     1057                                                media_hover.ms_loop();
     1058                                        e.preventDefault();
     1059                                        }
     1060                                        break;
     1061                                case 77 :
     1062                                        /**
     1063                                     * Touche M
     1064                                     * Mute ou unmute
     1065                                     */
     1066                                        if(media_hover && $('input:focus,textarea:focus').size() == 0){
     1067                                        media_hover.parents('.media').find('.volume_button').click();
     1068                                        e.preventDefault();
     1069                                        }
    10481070                                        break;
    10491071                                case 32 :
  • plugins_spip/html5/trunk/paquet.xml

    r7148 r7154  
    22        prefix="mediaspip_player"
    33        categorie="multimedia"
    4         version="1.2.3"
     4        version="1.2.4"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.0.99]"
Note: See TracChangeset for help on using the changeset viewer.