richdocuments/js/viewer/viewer.js
Pranav Kant b1e51782fc Bin superfluous returnToDir logic
This was initially introduced in OC so that we know which directory to
go after we close the editor but this seems unnecessary here in NC as
richdocuments is just an iframe which is removed from DOM when we close
the document.

(cherry picked from commit a5f6569591f11905c75b7cf978f76be12368ba42)
Signed-off-by: Andras Timar <andras.timar@collabora.com>
2017-05-18 10:10:31 +02:00

236 lines
7.3 KiB
JavaScript

/* globals FileList, OCA.Files.fileActions, oc_debug */
var odfViewer = {
isDocuments : false,
supportedMimes: [
'application/vnd.oasis.opendocument.text',
'application/vnd.oasis.opendocument.spreadsheet',
'application/vnd.oasis.opendocument.graphics',
'application/vnd.oasis.opendocument.presentation',
'application/vnd.lotus-wordpro',
'image/svg+xml',
'application/vnd.visio',
'application/vnd.wordperfect',
'application/msonenote',
'application/msword',
'application/rtf',
'text/rtf',
'text/plain',
'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
'application/vnd.ms-word.document.macroEnabled.12',
'application/vnd.ms-word.template.macroEnabled.12',
'application/vnd.ms-excel',
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
'application/vnd.openxmlformats-officedocument.spreadsheetml.template',
'application/vnd.ms-excel.sheet.macroEnabled.12',
'application/vnd.ms-excel.template.macroEnabled.12',
'application/vnd.ms-excel.addin.macroEnabled.12',
'application/vnd.ms-excel.sheet.binary.macroEnabled.12',
'application/vnd.ms-powerpoint',
'application/vnd.openxmlformats-officedocument.presentationml.presentation',
'application/vnd.openxmlformats-officedocument.presentationml.template',
'application/vnd.openxmlformats-officedocument.presentationml.slideshow',
'application/vnd.ms-powerpoint.addin.macroEnabled.12',
'application/vnd.ms-powerpoint.presentation.macroEnabled.12',
'application/vnd.ms-powerpoint.template.macroEnabled.12',
'application/vnd.ms-powerpoint.slideshow.macroEnabled.12'
],
register : function() {
var i,
mime;
for (i = 0; i < odfViewer.supportedMimes.length; ++i) {
mime = odfViewer.supportedMimes[i];
OCA.Files.fileActions.register(
mime,
'Edit',
OC.PERMISSION_UPDATE | OC.PERMISSION_READ,
OC.imagePath('core', 'actions/rename'),
odfViewer.onEdit,
t('richdocuments', 'Edit')
);
OCA.Files.fileActions.setDefault(mime, 'Edit');
}
},
dispatch : function(filename){
odfViewer.onEdit(filename);
},
onEdit : function(fileName, context) {
if(context) {
var fileDir = context.dir;
var fileId = context.$file.attr('data-id');
}
var viewer;
if($('#isPublic').val() === '1') {
viewer = OC.generateUrl(
'apps/richdocuments/public?shareToken={shareToken}&fileName={fileName}&requesttoken={requesttoken}',
{
shareToken: $('#sharingToken').val(),
fileName: fileName,
dir: fileDir,
requesttoken: OC.requestToken
}
);
} else {
viewer = OC.generateUrl(
'apps/richdocuments/index?fileId={fileId}&requesttoken={requesttoken}',
{
fileId: fileId,
dir: fileDir,
requesttoken: OC.requestToken
}
);
}
if(context) {
FileList.setViewerMode(true);
}
var $iframe = $('<iframe id="richdocumentsframe" style="width:100%;height:100%;display:block;position:absolute;top:0;" src="'+viewer+'" />');
if ($('#isPublic').val()) {
// force the preview to adjust its height
$('#preview').append($iframe).css({height: '100%'});
$('body').css({height: '100%'});
$('#content').addClass('full-height');
$('footer').addClass('hidden');
$('#imgframe').addClass('hidden');
$('.directLink').addClass('hidden');
$('.directDownload').addClass('hidden');
$('#controls').addClass('hidden');
$('#content').addClass('loading');
} else {
$('#app-content').append($iframe);
}
$('#app-content #controls').addClass('hidden');
$('#app-content').append($iframe);
},
onClose: function() {
if(typeof FileList !== "undefined") {
FileList.setViewerMode(false);
}
$('#app-content #controls').removeClass('hidden');
$('#richdocumentsframe').remove();
},
registerFilesMenu: function() {
var ooxml = false;
var docExt, spreadsheetExt, presentationExt;
var docMime, spreadsheetMime, presentationMime;
if (ooxml) {
docExt = 'docx';
spreadsheetExt = 'xlsx';
presentationExt = 'pptx';
docMime = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
spreadsheetMime = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
presentationMime = 'application/vnd.openxmlformats-officedocument.presentationml.presentation';
} else {
docExt = 'odt';
spreadsheetExt = 'ods';
presentationExt = 'odp';
docMime = 'application/vnd.oasis.opendocument.text';
spreadsheetMime = 'application/vnd.oasis.opendocument.spreadsheet';
presentationMime = 'application/vnd.oasis.opendocument.presentation';
}
(function(OCA){
OCA.FilesLOMenu = {
attach: function(newFileMenu) {
var self = this;
newFileMenu.addMenuEntry({
id: 'add-' + docExt,
displayName: t('richdocuments', 'Document'),
templateName: 'New Document.' + docExt,
iconClass: 'icon-filetype-document',
fileType: 'x-office-document',
actionHandler: function(filename) {
self._createDocument(docMime, filename);
}
});
newFileMenu.addMenuEntry({
id: 'add-' + spreadsheetExt,
displayName: t('richdocuments', 'Spreadsheet'),
templateName: 'New Spreadsheet.' + spreadsheetExt,
iconClass: 'icon-filetype-spreadsheet',
fileType: 'x-office-spreadsheet',
actionHandler: function(filename) {
self._createDocument(spreadsheetMime, filename);
}
});
newFileMenu.addMenuEntry({
id: 'add-' + presentationExt,
displayName: t('richdocuments', 'Presentation'),
templateName: 'New Presentation.' + presentationExt,
iconClass: 'icon-filetype-presentation',
fileType: 'x-office-presentation',
actionHandler: function(filename) {
self._createDocument(presentationMime, filename);
}
});
},
_createDocument: function(mimetype, filename) {
OCA.Files.Files.isFileNameValid(filename);
filename = FileList.getUniqueName(filename);
$.post(
OC.generateUrl('apps/richdocuments/ajax/documents/create'),
{ mimetype : mimetype, filename: filename, dir: $('#dir').val() },
function(response){
if (response && response.status === 'success'){
FileList.add(response.data, {animate: true, scrollTo: true});
} else {
OC.dialogs.alert(response.data.message, t('core', 'Could not create file'));
}
}
);
}
};
})(OCA);
OC.Plugins.register('OCA.Files.NewFileMenu', OCA.FilesLOMenu);
}
};
$(document).ready(function() {
if ( typeof OCA !== 'undefined'
&& typeof OCA.Files !== 'undefined'
&& typeof OCA.Files.fileActions !== 'undefined'
) {
odfViewer.register();
odfViewer.registerFilesMenu();
}
});
// FIXME: Hack for single public file view since it is not attached to the fileslist
$(document).ready(function(){
// FIXME: FIlter compatible mime types
if ($('#isPublic').val() && odfViewer.supportedMimes.indexOf($('#mimetype').val()) !== -1) {
odfViewer.onEdit($('#filename').val());
}
});
$(document).ready(function() {
var eventMethod = window.addEventListener ? 'addEventListener' : 'attachEvent';
var eventer = window[eventMethod];
var messageEvent = eventMethod == 'attachEvent' ? 'onmessage' : 'message';
eventer(messageEvent,function(e) {
if(e.data === 'close') {
odfViewer.onClose();
} else if(e.data === 'loading') {
$('#content').removeClass('loading');
}
}, false);
});