pad.libre-service.eu-etherpad/src/static/js/pad_impexp.js

219 lines
7 KiB
JavaScript
Raw Normal View History

/**
* This code is mostly from the old Etherpad. Please help us to comment this code.
* This helps other people to understand this code better and helps them to improve it.
* TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED
*/
2011-03-26 14:10:41 +01:00
/**
* Copyright 2009 Google Inc.
2011-07-07 19:59:34 +02:00
*
2011-03-26 14:10:41 +01:00
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
2011-07-07 19:59:34 +02:00
*
2011-03-26 14:10:41 +01:00
* http://www.apache.org/licenses/LICENSE-2.0
2011-07-07 19:59:34 +02:00
*
2011-03-26 14:10:41 +01:00
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS-IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
2020-11-23 19:24:19 +01:00
const padimpexp = (function () {
// /// import
let currentImportTimer = null;
2011-03-26 14:10:41 +01:00
function addImportFrames() {
2020-11-23 19:24:19 +01:00
$('#import .importframe').remove();
const iframe = $('<iframe style="display: none;" name="importiframe" class="importframe"></iframe>');
2011-07-21 21:13:58 +02:00
$('#import').append(iframe);
2011-03-26 14:10:41 +01:00
}
2011-07-07 19:59:34 +02:00
function fileInputUpdated() {
2014-11-18 19:09:29 +01:00
$('#importsubmitinput').addClass('throbbold');
2011-03-26 14:10:41 +01:00
$('#importformfilediv').addClass('importformenabled');
$('#importsubmitinput').removeAttr('disabled');
2014-11-18 19:09:29 +01:00
$('#importmessagefail').fadeOut('fast');
2011-03-26 14:10:41 +01:00
}
2011-07-07 19:59:34 +02:00
function fileInputSubmit() {
2020-11-23 19:24:19 +01:00
$('#importmessagefail').fadeOut('fast');
const ret = window.confirm(html10n.get('pad.impexp.confirmimport'));
if (ret) {
currentImportTimer = window.setTimeout(() => {
if (!currentImportTimer) {
2011-03-26 14:10:41 +01:00
return;
}
currentImportTimer = null;
2020-11-23 19:24:19 +01:00
importFailed('Request timed out.');
importDone();
2011-03-26 14:10:41 +01:00
}, 25000); // time out after some number of seconds
2011-07-07 19:59:34 +02:00
$('#importsubmitinput').attr(
2020-11-23 19:24:19 +01:00
{
disabled: true,
}).val(html10n.get('pad.impexp.importing'));
2020-11-23 19:24:19 +01:00
window.setTimeout(() => {
2011-07-07 19:59:34 +02:00
$('#importfileinput').attr(
2020-11-23 19:24:19 +01:00
{
disabled: true,
});
2011-07-07 19:59:34 +02:00
}, 0);
2011-03-26 14:10:41 +01:00
$('#importarrow').stop(true, true).hide();
$('#importstatusball').show();
}
return ret;
}
2011-07-07 19:59:34 +02:00
function importFailed(msg) {
2011-03-26 14:10:41 +01:00
importErrorMessage(msg);
}
2011-07-07 19:59:34 +02:00
function importDone() {
2020-11-23 19:24:19 +01:00
$('#importsubmitinput').removeAttr('disabled').val(html10n.get('pad.impexp.importbutton'));
window.setTimeout(() => {
2011-07-07 19:59:34 +02:00
$('#importfileinput').removeAttr('disabled');
}, 0);
2011-03-26 14:10:41 +01:00
$('#importstatusball').hide();
importClearTimeout();
addImportFrames();
2011-03-26 14:10:41 +01:00
}
2011-07-07 19:59:34 +02:00
function importClearTimeout() {
2020-11-23 19:24:19 +01:00
if (currentImportTimer) {
2011-03-26 14:10:41 +01:00
window.clearTimeout(currentImportTimer);
currentImportTimer = null;
}
}
2011-07-07 19:59:34 +02:00
function importErrorMessage(status) {
2020-11-23 19:24:19 +01:00
let msg = '';
if (status === 'convertFailed') {
msg = html10n.get('pad.impexp.convertFailed');
} else if (status === 'uploadFailed') {
msg = html10n.get('pad.impexp.uploadFailed');
} else if (status === 'padHasData') {
msg = html10n.get('pad.impexp.padHasData');
} else if (status === 'maxFileSize') {
msg = html10n.get('pad.impexp.maxFileSize');
} else if (status === 'permission') {
msg = html10n.get('pad.impexp.permission');
}
function showError(fade) {
2020-11-23 19:24:19 +01:00
$('#importmessagefail').html(`<strong style="color: red">${html10n.get('pad.impexp.importfailed')}:</strong> ${msg || html10n.get('pad.impexp.copypaste', '')}`)[(fade ? 'fadeIn' : 'show')]();
2011-03-26 14:10:41 +01:00
}
2020-11-23 19:24:19 +01:00
if ($('#importexport .importmessage').is(':visible')) {
$('#importmessagesuccess').fadeOut('fast');
$('#importmessagefail').fadeOut('fast', () => {
2011-07-07 19:59:34 +02:00
showError(true);
});
2020-11-23 19:24:19 +01:00
} else {
2011-03-26 14:10:41 +01:00
showError();
}
}
2011-07-07 19:59:34 +02:00
2020-11-23 19:24:19 +01:00
// /// export
2011-03-26 14:10:41 +01:00
function cantExport() {
2020-11-23 19:24:19 +01:00
let type = $(this);
if (type.hasClass('exporthrefpdf')) {
type = 'PDF';
} else if (type.hasClass('exporthrefdoc')) {
type = 'Microsoft Word';
} else if (type.hasClass('exporthrefodt')) {
type = 'OpenDocument';
} else {
type = 'this file';
2011-03-26 14:10:41 +01:00
}
2020-11-23 19:24:19 +01:00
alert(html10n.get('pad.impexp.exportdisabled', {type}));
2011-03-26 14:10:41 +01:00
return false;
}
2020-11-23 19:24:19 +01:00
// ///
var pad = undefined;
2020-11-23 19:24:19 +01:00
const self = {
init(_pad) {
pad = _pad;
2020-11-23 19:24:19 +01:00
// get /p/padname
2015-02-11 03:07:20 +01:00
// if /p/ isn't available due to a rewrite we use the clientVars padId
2020-11-23 19:24:19 +01:00
const pad_root_path = new RegExp(/.*\/p\/[^\/]+/).exec(document.location.pathname) || clientVars.padId;
// get http://example.com/p/padname without Params
const pad_root_url = `${document.location.protocol}//${document.location.host}${document.location.pathname}`;
// i10l buttom import
$('#importsubmitinput').val(html10n.get('pad.impexp.importbutton'));
html10n.bind('localized', () => {
$('#importsubmitinput').val(html10n.get('pad.impexp.importbutton'));
});
2011-07-22 15:07:13 +02:00
// build the export links
2020-11-23 19:24:19 +01:00
$('#exporthtmla').attr('href', `${pad_root_path}/export/html`);
$('#exportetherpada').attr('href', `${pad_root_path}/export/etherpad`);
$('#exportplaina').attr('href', `${pad_root_path}/export/txt`);
// activate action to import in the form
2020-11-23 19:24:19 +01:00
$('#importform').attr('action', `${pad_root_url}/import`);
// hide stuff thats not avaible if abiword/soffice is disabled
if (clientVars.exportAvailable == 'no') {
$('#exportworda').remove();
$('#exportpdfa').remove();
$('#exportopena').remove();
$('#importmessageabiword').show();
} else if (clientVars.exportAvailable == 'withoutPDF') {
$('#exportpdfa').remove();
$('#exportworda').attr('href', `${pad_root_path}/export/doc`);
$('#exportopena').attr('href', `${pad_root_path}/export/odt`);
$('#importexport').css({height: '142px'});
$('#importexportline').css({height: '142px'});
} else {
$('#exportworda').attr('href', `${pad_root_path}/export/doc`);
$('#exportpdfa').attr('href', `${pad_root_path}/export/pdf`);
$('#exportopena').attr('href', `${pad_root_path}/export/odt`);
}
2011-03-26 14:10:41 +01:00
addImportFrames();
2020-11-23 19:24:19 +01:00
$('#importfileinput').change(fileInputUpdated);
$('#importform').unbind('submit').submit(fileInputSubmit);
2011-03-26 14:10:41 +01:00
$('.disabledexport').click(cantExport);
},
2020-11-23 19:24:19 +01:00
handleFrameCall(directDatabaseAccess, status) {
if (directDatabaseAccess === 'undefined') directDatabaseAccess = false;
if (status !== 'ok') {
importFailed(status);
2020-11-23 19:24:19 +01:00
} else {
$('#import_export').removeClass('popup-show');
}
if (directDatabaseAccess) {
// Switch to the pad without redrawing the page
pad.switchToPad(clientVars.padId);
$('#import_export').removeClass('popup-show');
}
importDone();
2011-03-26 14:10:41 +01:00
},
2020-11-23 19:24:19 +01:00
disable() {
$('#impexp-disabled-clickcatcher').show();
$('#import').css('opacity', 0.5);
$('#impexp-export').css('opacity', 0.5);
},
enable() {
$('#impexp-disabled-clickcatcher').hide();
$('#import').css('opacity', 1);
$('#impexp-export').css('opacity', 1);
2011-03-26 14:10:41 +01:00
},
};
return self;
}());
exports.padimpexp = padimpexp;