Blame view

sources/apps/files_videoviewer/js/viewer.js 3.38 KB
d1bafeea1   Kload   [fix] Upgrade to ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
  var videoViewer = {
  	UI : {
  		playerTemplate : '<video width="%width%" height="%height%" id="media_element" class="video-js vjs-default-skin" controls preload="none">' + 
  		'<source type="%type%" src="%src%" />' + 
  		'</video>',
  		show : function () {
  			$('<div id="videoviewer_overlay" style="display:none;"></div><div id="videoviewer_popup"><div id="videoviewer_container"><a class="box-close" id="box-close" href="#"></a><h3>'+escapeHTML(videoViewer.file)+'</h3></div></div>').appendTo('body');
  			
  			$('#videoviewer_overlay').fadeIn('fast',function(){
  				$('#videoviewer_popup').fadeIn('fast');
  			});
  			$('#box-close').click(videoViewer.hidePlayer);
  			var size = videoViewer.UI.getSize();
  			var playerView = videoViewer.UI.playerTemplate.replace(/%width%/g, size.width)
  								.replace(/%height%/g, size.height)
  								.replace(/%type%/g, videoViewer.mime)
  								.replace(/%src%/g, videoViewer.location)
  			;
  			$(playerView).prependTo('#videoviewer_container');
  		},
  		hide : function() {
  			$('#videoviewer_popup').fadeOut('fast', function() {
  				$('#videoviewer_overlay').fadeOut('fast', function() {
  					$('#videoviewer_popup').remove();
  					$('#videoviewer_overlay').remove();
  				});
  			});
  		},
  		getSize : function () {
  			var size;
  			if ($(document).width()>'680' && $(document).height()>'520' ){
  				size = {width: 640, height: 480};
  			} else {
  				size = {width: 320, height: 240};
  			}
  			return size;
  		}
  	},
  	mime : null,
  	file : null,
  	location : null,
  	player : null,
  	dir: null,
  	mimeTypes : [
  		'video/mp4',
  		'video/webm',
  		'video/x-flv',
  		'application/ogg',
  		'video/ogg',
  		'video/quicktime',
  		'video/x-msvideo',
  		'video/x-matroska',
  		'video/x-ms-asf'
  	],
  	onView : function(file) {
  		videoViewer.file = file;
  		videoViewer.dir = $('#dir').val();
  		videoViewer.location = videoViewer.getMediaUrl(file);
  		videoViewer.mime = FileActions.getCurrentMimeType();
  		
  		OC.addScript('files_videoviewer','mediaelement-and-player', function(){
  			OC.addScript('files_videoviewer','mep-extra', videoViewer.showPlayer);
  		});
  	},
  	showPlayer : function() {
  		videoViewer.UI.show();
  	
  		videoViewer.player = new MediaElementPlayer('#media_element', {
  			features: ['playpause','progress','current','duration','tracks','volume','fullscreen'],
  			pluginPath : OC.filePath('files_videoviewer', 'js', ''),
  			pauseOtherPlayers: false,
  			enablePluginDebug: false,
  			plugins: ['flash','silverlight'],
  			success: function (player, node) {
  				//set the size (for flash otherwise no video just sound!)
  				player.setVideoSize($(node).width(), $(node).height());
  				player.load();
  				player.pause();
  			},
  			error: function (m) { 
  				console.log(m);
  			}
  		});
  	},
  	hidePlayer : function() {
  		videoViewer.player = false;
  		delete videoViewer.player;
  
  		videoViewer.UI.hide();
  	},
  	getMediaUrl : function(file) {
  		return fileDownloadPath(videoViewer.dir, file);
  	},
  	onKeyDown : function(e) {
  		if (e.keyCode == 27 && !$('.mejs-container-fullscreen').length && videoViewer.player) {
  			 videoViewer.hidePlayer();
  		}
  	},
  	log : function(message){
  		console.log(message);
  	}
  };
  
  $(document).ready(function() {	
  	if (typeof FileActions !== 'undefined') {
  		for (var i = 0; i < videoViewer.mimeTypes.length; ++i) {
  			var mime = videoViewer.mimeTypes[i];
  			FileActions.register(mime, 'View', OC.PERMISSION_READ, '', videoViewer.onView);
  			FileActions.setDefault(mime, 'View');
  		}
  		$(document).keydown(videoViewer.onKeyDown);
  	}
  });