Blame view

sources/apps/documents/js/viewer/viewer.js 3.74 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
114
115
116
117
118
119
120
121
122
123
  var odfViewer = {
  	isDocuments : false,
  	supportedMimesRead: [
  		'application/vnd.oasis.opendocument.text',
  		'application/vnd.oasis.opendocument.spreadsheet',
  		'application/vnd.oasis.opendocument.graphics',
  		'application/vnd.oasis.opendocument.presentation'
  	],
  			
  	supportedMimesUpdate: [
  		'application/vnd.oasis.opendocument.text'
  	],
  			
  	register : function(response){
  		if (response && response.mimes){
  			jQuery.each(response.mimes, function(i, mime){
  				odfViewer.supportedMimesRead.push(mime);
  				odfViewer.supportedMimesUpdate.push(mime);
  			});
  		}
  		for (var i = 0; i < odfViewer.supportedMimesRead.length; ++i) {
  			var mime = odfViewer.supportedMimesRead[i];
  			FileActions.register(mime, 'View', OC.PERMISSION_READ, '', odfViewer.onView);
  			FileActions.setDefault(mime, 'View');
  		}
  		for (var i = 0; i < odfViewer.supportedMimesUpdate.length; ++i) {
  			var mime = odfViewer.supportedMimesUpdate[i];
  			FileActions.register(
  					mime, 
  					t('documents', 'Edit'), 
  					OC.PERMISSION_UPDATE, 
  					OC.imagePath('core', 'actions/rename'), 
  					odfViewer.onEdit
  			);
  		}
  	},
  	
  	dispatch : function(filename){
  		if (odfViewer.supportedMimesUpdate.indexOf(FileActions.getCurrentMimeType()) !== -1
  		 && FileActions.getCurrentPermissions() & OC.PERMISSION_UPDATE
  		){
  			odfViewer.onEdit(filename);
  		} else {
  			odfViewer.onView(filename);
  		}
  	},
  	
  	onEdit : function(){
  		var fileId = FileActions.currentFile.parent().attr('data-id');
  		window.open(OC.linkTo('documents', 'index.php') + '#' + fileId);
  	},
  			
  	onView: function(filename) {
  		var webodfSource = (oc_debug === true) ? 'webodf-debug' : 'webodf',
  		attachTo = odfViewer.isDocuments ? '#documents-content' : 'table',
  		attachToolbarTo = odfViewer.isDocuments ? '#content-wrapper' : '#controls';
  
  		if (odfViewer.isDocuments){
  			//Documents view
  			var location = filename;
  		} else {
  			//Public page, files app, etc
  			var dirName = $('#dir').val()!='/' ? $('#dir').val() + '/' : '/';
  			var location = OC.filePath('documents', 'ajax', 'download.php') + '?path=' + dirName + encodeURIComponent(filename);
  			OC.addStyle('documents', '3rdparty/webodf/editor');
  		}
  		
  		OC.addStyle('documents', 'viewer/odfviewer');
  		
  		OC.addScript('documents', '3rdparty/webodf/' + webodfSource, function() {
  			// fade out files menu and add odf menu
  			$('#controls div').fadeOut('slow').promise().done(function() {
  				// odf action toolbar
  				var odfToolbarHtml =
  						'<div id="odf-toolbar">' +
  						'<button id="odf_close">' + t('documents', 'Close') +
  						'</button></div>';
  				if (odfViewer.isDocuments){
  					$(attachToolbarTo).prepend(odfToolbarHtml);
  					$('#odf-toolbar').css({position:'fixed'});
  				} else {
  					$(attachToolbarTo).append(odfToolbarHtml);
  				}
  			});
  
  			// fade out file list and show pdf canvas
  			$('table, #documents-content').fadeOut('slow').promise().done(function() {
  				var canvashtml = '<div id="odf-canvas"></div>';
  				$(attachTo).after(canvashtml);
  				// in case we are on the public sharing page we shall display the odf into the preview tag
  				$('#preview').html(canvashtml);
  
  				var odfelement = document.getElementById("odf-canvas");
  				var odfcanvas = new odf.OdfCanvas(odfelement);
  				odfcanvas.load(location);
  			});
  		});
  	},
  	
  	onClose: function() {
  		// Fade out odf-toolbar
  		$('#odf-toolbar').fadeOut('slow');
  		// Fade out editor
  		$('#odf-canvas').fadeOut('slow', function() {
  			$('#odf-toolbar').remove();
  			$('#odf-canvas').remove();
  			$('#controls div').not('.hidden').fadeIn('slow');
  			$('table, #documents-content').fadeIn('slow');
  		});
  	}
  };
  
  $(document).ready(function() {
  	if (typeof FileActions !== 'undefined') {
  		$.post(
  			OC.filePath('documents', 'ajax', 'mimes.php'),
  			{},
  			odfViewer.register
  		);
  	}
  
  	$('#odf_close').live('click', odfViewer.onClose);
  });