}
},
__openView: function (view, param1, param2, callback) {
- console.log('__openView(' + view + ',' + param1 + ',' + param2 + ')');
+ //console.log('__openView(' + view + ',' + param1 + ',' + param2 + ')');
var $this = this;
var camelView = view.charAt(0).toUpperCase() + view.substr(1);
var from = {y: -200, opacity: 0};
var to = {
y: 0, opacity: 1, onComplete: function () {
- console.log('end opening view');
+ //console.log('end opening view');
callback();
$this.fluidbook.hideLoader();
resize();
this.players = {};
- console.info('**** SETUP FluidbookVideo module ****');
-
$(fluidbook).on('changePage', function (e, page) {
$this.removeAllVideos();
});
html,
player;
- fb('Initialising video ID: ' + id);
+ //fb('Initialising video ID: ' + id);
// Player might be active but not visible so we need to dispose of it before re-initialising the element
if (videojs.players[id]) {
- fb(id + ' player already active. Disposing...');
+ //fb(id + ' player already active. Disposing...');
videojs(id).dispose();
}
player = videojs(id, setup);
player.ready(function() {
- fb(id + ' player is ready');
+ //fb(id + ' player is ready');
$this.resizeControls(); // Make sure player controls are the right size
if (fluidbook.video.players[id]) {
- fb('found saved settings for player ID ' + id);
+ //fb('found saved settings for player ID ' + id);
var settings = fluidbook.video.players[id];
- console.log(settings);
+ //console.log(settings);
+
+ // In the case of autoplay videos, we don't want the autoplay to fire
+ // more than once (ie. never after we have these settings reccorded)
+ // It interferes with play/pausing
+ player.autoplay(false);
// Restore settings
player.volume(settings.volume);
player.muted(settings.muted);
player.currentTime(settings.currentTime);
+
+ // Start player to go to current position - necessary even if it will be paused immediately
+ setTimeout(function() { player.play(); }, 50);
+
+ player.one('play', function() {
+ //fb('Player has started playing... ID: ' + id);
+ // Handle pause in here if needed.. Better than using the timeout...
+
+ if (settings.paused) {
+ //fb(id + ' should be paused');
+ setTimeout(function() { player.pause(); }, 100);
+ }
+
+ });
+
+
player.play(); // Start player to go to current position - necessary even if it will be paused immediately
if (settings.paused) {
player.pause();
player.on('pause', function() {
fb(id + ' player paused');
- // Todo: show/hide play button: http://stackoverflow.com/a/25296575
+
+ // Show play button (ref: http://stackoverflow.com/a/25296575)
+ this.bigPlayButton.show();
+
+ // Now the issue is that we need to hide it again if we start playing
+ // So every time we do this, we can create a one-time listener for play events.
+ player.one('play', function() {
+ this.bigPlayButton.hide();
+ });
});
// player.on('fullscreenchange', function() {
openVideo: function(link) {
if (link === undefined) return false;
- console.info('openVideo...');
-
link = $(link);
var popup = $('#videoPopup'),
path,
poster;
- console.info(width, height, name, loop);
+ //console.info(width, height, name, loop);
if (fluidbook.datas.mobileVideosPath == '') {
path = "data/links/" + name;
}
html += 'src="' + path + '.' + this.preferedFormat + '"></video>';
- console.log('Resulting HTML:', html);
+ //console.log('Resulting HTML:', html);
popup.html(html);
videojs($('#videoPopup video'));
};
}
- fb('Disposing video ID ' + id);
+ //fb('Disposing video ID ' + id);
player.dispose();
});
},
/* The font size is what makes the big play button...big.
All width/height values use ems, which are a multiple of the font size.
If the .video-js font-size is 10px, then 3em equals 30px.*/
- font-size: 10em;
+ font-size: 3em;
/* We're using SCSS vars here because the values are used in multiple places.
Now that font size is set, the following em values will be a multiple of the
new font size. If the font-size is 3em (30px), then setting any of
line-height: 1.5em;
height: 1.5em;
width: 3em;
- background-color: transparent !important;
opacity: 0.6;
/* 0.06666em = 2px default */
border: none;
/* 0.3em = 9px default */
- border-radius: 0.3em;
+ border-radius: 0;
/* Align center */
left: 50%;
top: 50%;
margin-left: -1.5em;
margin-top: -0.75em;
- //display: block;
+
+ background-color: transparent !important;
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 528.65 595.81'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:%23fff;%7D%3C/style%3E%3C/defs%3E%3Ctitle%3EAsset 1%3C/title%3E%3Cg id='Layer_2' data-name='Layer 2'%3E%3Cg id='Layer_2-2' data-name='Layer 2'%3E%3Cpath class='cls-1' d='M28.21,2.49l490.88,279a18.88,18.88,0,0,1,0,32.83l-490.88,279A18.88,18.88,0,0,1,0,576.9v-558A18.88,18.88,0,0,1,28.21,2.49Z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: contain;
+
+ .vjs-icon-placeholder {
+ display: none;
+ }
}
+
+// Allow play button to be redisplayed when video is paused
+.vjs-paused.vjs-has-started .vjs-big-play-button {
+ display: block;
+}
+
+
.vjs-fluidbook-skin .vjs-big-play-button:focus, .vjs-fluidbook-skin .vjs-big-play-button:hover {
opacity: 1;
outline: none;