Advertisement
Guest User

Untitled

a guest
Oct 9th, 2015
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.22 KB | None | 0 0
  1. /*
  2. MODULE: FULLSCREEN BUTTON
  3. Handle full screen button and shortcut.
  4.  
  5. Fires:
  6. - player:fullscreenchange
  7.  
  8. Answers properties:
  9. - supportsFullscreen [get]
  10. - fullscreen [get/set]
  11.  
  12. Options
  13. - fullscreenMode [standard/reload]
  14. */
  15.  
  16. Player.provide('fullscreen-button',
  17. {
  18. fullscreenMode:'reload'
  19. },
  20. function(Player,$,opts){
  21. var $this = this;
  22. $.extend($this, opts);
  23. Player.bind('player:settings', function(e){
  24. PlayerUtilities.mergeSettings($this, ['fullscreenMode']);
  25. });
  26.  
  27. // Is this the subject of a fullscreen reload?
  28. var fullscreenReloadMode = Player.parameters.fullscreenReload||false;
  29. if(fullscreenReloadMode) {
  30. $(window).on('blur', function(){
  31. window.close();
  32. });
  33. }
  34.  
  35. // Toogle fullscreen on alt+enter
  36. $(window).keydown(function(e){
  37. if((e.altKey||e.metaKey) && (e.charCode==32 || e.keyCode==13)) {
  38. Player.set('fullscreen', !Player.get('fullscreen'));
  39. }
  40. });
  41.  
  42. // Update UI when full screen changes
  43. Player.bind('player:video:fullscreenchange player:loaded player:video:ready', function(e){
  44. $this.container.toggle(Player.get('supportsFullscreen'));
  45. $this.render();
  46. });
  47.  
  48. // Hide elements when Flash is prompting for full screen
  49. Player.bind('player:video:fullscreenprompt', function(e){
  50. $('.big-button, .video-canvas div').hide();
  51. });
  52. Player.bind('player:video:clearfullscreenprompt', function(e){
  53. $('.big-button, .video-canvas div').show();
  54. });
  55. Player.bind('player:video:enterfullscreen', function(e){
  56. Player.set('playing', true);
  57. Player.set('analyticsEvent', 'fullscreen');
  58. });
  59.  
  60. // Implement an alternative fullscreen mode using window.open() and a full player reload
  61. var openReloadFullscreen = function(){
  62. // Control state of the new player
  63. var loaded = false;
  64. var playing = Player.get('playing');
  65. var currentTime = Player.get('currentTime');
  66. // Pause this player
  67. Player.set('playing', false);
  68. // Build a URL from the current location
  69. var url = location.href;
  70. if(!/\?/.test(url)) url+='?';
  71. url = url.replace('autoPlay=[01]?', '').replace('start=[\.0-9]+?', '').replace(/\&$/, '');
  72. url += '&autoPlay=1&fullscreenReload=1&start='+currentTime;
  73. // Open a fullscreen window
  74. var fs = window.open(url, 'fullscreen', 'fullscreen=yes,menubar=no,scrollbars=no,titlebar=no,toolbar=no');
  75. // Listen for changes in the fullscreen window
  76. var interval = window.setInterval(function(){
  77. // Wait for the frame to have loaded a Player
  78. if(!loaded && (!fs || !fs.window || !fs.window.Player)) return;
  79. loaded = true;
  80.  
  81. if(fs && fs.window && fs.window.Player) {
  82. // Update state on the player
  83. currentTime = fs.window.Player.get('currentTime');
  84. playing = fs.window.Player.get('playing');
  85. } else {
  86. // Bring state back on close
  87. window.clearInterval(interval);
  88. if(fs) fs.close();
  89. Player.set('currentTime', currentTime);
  90. Player.set('playing', playing);
  91. }
  92. }, 300);
  93. }
  94.  
  95. /* GETTERS */
  96. Player.getter('supportsFullscreen', function(){
  97. if(fullscreenReloadMode || $this.fullscreenMode=='reload') return true;
  98.  
  99. var ve = Player.get('videoElement');
  100. return (ve ? ve.hasFullscreen() : false);
  101. });
  102. Player.getter('fullscreen', function(){
  103. if(fullscreenReloadMode || $this.fullscreenMode=='reload') return true;
  104.  
  105. var ve = Player.get('videoElement');
  106. return (ve ? ve.isFullscreen() : false);
  107. });
  108. /* SETTERS */
  109. Player.setter('fullscreen', function(fs){
  110. if(!Player.get('supportsFullscreen')) return;
  111. if(fullscreenReloadMode) {
  112. window.close();
  113. return;
  114. }
  115. if($this.fullscreenMode=='reload') {
  116. openReloadFullscreen();
  117. return;
  118. }
  119. var ve = Player.get('videoElement');
  120. if(ve) {
  121. if(fs) {
  122. ve.enterFullscreen();
  123. } else {
  124. ve.leaveFullscreen();
  125. }
  126. }
  127. }, (fullscreenReloadMode?['esc']:[]));
  128.  
  129. return $this;
  130. }
  131. );
  132.  
  133. /* Translations for this module */
  134. Player.translate("toggle_fullscreen",{
  135. en: "Toggle fullscreen"
  136. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement