/home/arranoyd/telegastro/wp-content/plugins/fv-wordpress-flowplayer/js/editor-screenshots.js
/*
* Take screenshot from preview
*/
( function($) {
var index = 0;
flowplayer( function(api,root) {
root = jQuery(root);
var button = jQuery('<input type="button" value="Screenshot" class="button" id="fv-splash-screen-button" />'),
spinner =jQuery('<div class="fv-player-shortcode-editor-small-spinner"> </div>'),
message = jQuery('.fv-messages'),
title ='';
// where to seek when trying to setup the crossOrigin attribute for video
var seek_recovery = false;
function takeScreenshot() {
var video = root.find('video').get(0);
var canvas = document.createElement("canvas");
canvas.width = video.videoWidth * 1;
canvas.height = video.videoHeight * 1;
canvas.getContext('2d').drawImage(video, 0, 0, canvas.width, canvas.height);
var img = document.createElement("img");
img.src = canvas.toDataURL('image/jpeg', 0.95);
return img.src ;
}
button.on('click', function(){
try {
button.prop("disabled",true);
var screenshot = takeScreenshot();
var item = jQuery('.fv-player-playlist-item[data-index="'+index+'"]');
spinner.insertAfter( item.find('#fv_wp_flowplayer_field_splash') );
// Check title
if(item.find('#fv_wp_flowplayer_field_caption').val()){
title = item.find('#fv_wp_flowplayer_field_caption').val()
}else{
title = item.find('#fv_wp_flowplayer_field_src').val()
}
var data = {
'action': 'fv_player_splashcreen_action',
'img': screenshot,
'title': title,
'security': fv_player_editor_conf.splashscreen_nonce
};
}
catch(err) {
var video_tag = root.find('video.fp-engine')[0];
// try to set crossOrigin if it's a HTML5 video - no HLS or DASH
if( video_tag && video_tag.crossOrigin != 'anonymous' && api.engine.engineName == 'html5' ) {
console.log('FV Player Editor Screenshots: Reloading with CORS');
// without this Flowplayer will remove that crossOrigin="anonymous" automatically!
api.conf.nativesubtitles = true;
video_tag.crossOrigin = 'anonymous';
reload_video();
return;
}
show_error();
console.log('FV Player Editor Screenshots: '+err);
return;
}
jQuery.post(fv_player.ajaxurl, data, function(response) {
if(response.src) {
var splashInput = item.find('#fv_wp_flowplayer_field_splash');
splashInput.val(response.src);
splashInput.css('background-color','#6ef442');
// trigger autosave
splashInput.trigger('keyup');
}
if(response.error) {
message.html('<div class="error"><p>'+response.error+'</p></div>');
fv_player_editor.fv_wp_flowplayer_dialog_resize()
}
spinner.remove();
button.prop("disabled",false);
// trigger preview
fv_wp_flowplayer_submit('refresh-button');
setTimeout(function(){
splashInput.css('background-color','#ffffff');
}, 2000);
});
});
// Compatibility test
api.bind('ready', function(e,api) {
if(jQuery('#fv_player_boxLoadedContent').length == 1) {
var src = jQuery('[name="fv_wp_flowplayer_field_src"]:visible').val(), // check using visible src
should_show = true;
if ( typeof src != 'undefined' ) {
fv_player_editor_conf_screenshots.disable_domains.forEach(function(item, index) {
if( src.indexOf(item) !== -1 ) {
should_show = false;
}
});
if( should_show ) {
button.appendTo('#fv-player-shortcode-editor-preview');
try {
takeScreenshot();
} catch(err) {
button.prop("disabled",true);
}
}
}
}
});
// Resume video after setting crossOrigin
api.on('resume progress', function(e) {
if( seek_recovery && api.video.seekable ) {
api.seek(seek_recovery, function() {
seek_recovery = false;
// try to take the screenshot again
button.click();
});
}
});
// Show error if video fails after setting crossOrigin
api.on('error', function(e, api, err) {
if( seek_recovery ) {
// prevent FV Player Pro from trying to recover
api.fv_retry_count = 100;
console.log('FV Player Editor Screenshots: Video won\'t play with crossOrigin="anonymous"');
show_error();
}
});
function reload_video() {
seek_recovery = api.video.time;
var index = typeof(api.video.index) != "undefined" ? api.video.index : 0;
api.error = api.loading = false;
jQuery(root).find('.fp-message').remove();
jQuery(root).removeClass("is-error").addClass("is-mouseover");
if( api.conf.playlist.length ) {
api.setPlaylist(api.conf.playlist).play(index);
} else {
api.load(api.conf.clip);
}
}
function show_error() {
spinner.remove();
button.prop("disabled",false);
message.html(fv_player_editor_translations.screenshot_cors_error);
fv_wp_flowplayer_dialog_resize();
}
});
// Remove button, spinner, message
jQuery(document).on('fv_flowplayer_player_editor_reset', function() {
jQuery('#fv-splash-screen-button').remove();
jQuery('.fv-player-shortcode-editor-small-spinner').remove();
jQuery('.fv-messages').empty();
index = 0;
});
jQuery(document).on('fvp-preview-complete', function() {
jQuery('#fv-splash-screen-button').remove();
jQuery('.fv-player-shortcode-editor-small-spinner').remove();
jQuery('.fv-messages').empty();
});
// Video index
jQuery(document).on('fv_flowplayer_shortcode_item_switch', function(e,i) {
index = i;
});
})(jQuery);