Use parameters to trigger new document creation in the files app

Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
Julius Härtl 2019-01-25 10:36:03 +01:00
Родитель 247f1a71d9
Коммит ec388693be
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4C614C6ED2CDE6DF
2 изменённых файлов: 80 добавлений и 14 удалений

Просмотреть файл

@ -555,6 +555,9 @@ var documentsMain = {
$buttons.eq(0).text(t('richdocuments', 'Cancel'));
$buttons.eq(1).text(t('richdocuments', 'Save'));
});
} else if (msgId === 'UI_CreateFile') {
documentsMain.UI.createNewFile(args.DocumentType);
} else if (msgId === 'UI_InsertGraphic') {
parent.OC.dialogs.filepicker(t('richdocuments', 'Insert Graphic'), function(path, type) {
if (type === OC.dialogs.FILEPICKER_TYPE_CHOOSE) {
@ -602,6 +605,32 @@ var documentsMain = {
$('#loleafletform').submit();
},
/* Ask for a new filename and open the files app in a new tab
* the parameters richdocuments_create and richdocuments_filename are
* parsed by viewer.js and open a template picker in the new tab
*/
createNewFile: function(type) {
parent.OC.dialogs.prompt(
t('richdocuments', 'Please enter the filename for the new document'),
t('richdocuments', 'Save As'),
function(result, value) {
if (result === true && value) {
var dir = parent.$('#dir').val();
var url = OC.generateUrl('/apps/files/?dir=' + dir + '&richdocuments_create=' + type + '&richdocuments_filename=' + encodeURI(value));
var win = window.open(url, '_blank');
}
},
true,
t('richdocuments', 'New filename'),
false
).then(function() {
var $dialog = parent.$('.oc-dialog:visible');
var $buttons = $dialog.find('button');
$buttons.eq(0).text(t('richdocuments', 'Cancel'));
$buttons.eq(1).text(t('richdocuments', 'Create a new document'));
});
},
hideEditor : function(){
// Fade out editor
$('#mainContainer').fadeOut('fast', function() {
@ -646,6 +675,7 @@ var documentsMain = {
}
documentsMain.ready = true;
parent.OCA.Files.App.fileList.reload();
},
WOPIPostMessage: function(iframe, msgId, values) {

Просмотреть файл

@ -1,4 +1,16 @@
/* globals FileList, OCA.Files.fileActions, oc_debug */
var url = new URL(window.location);
var type = url.searchParams.get("richdocuments_create");
var filename = url.searchParams.get("richdocuments_filename");
var Preload = {
create: {
type: type,
filename: filename,
}
};
var odfViewer = {
isDocuments : false,
supportedMimes: [
@ -57,6 +69,18 @@ var odfViewer = {
odfViewer.onEdit(filename);
},
getNewDocumentFromTemplateUrl: function(templateId, fileName, fileDir, fillWithTemplate) {
return OC.generateUrl(
'apps/richdocuments/indexTemplate?templateId={templateId}&fileName={fileName}&dir={dir}&requesttoken={requesttoken}',
{
templateId: templateId,
fileName: fileName,
dir: fileDir,
requesttoken: OC.requestToken
}
);
},
onEdit : function(fileName, context) {
if(context) {
var fileDir = context.dir;
@ -78,15 +102,7 @@ var odfViewer = {
} else {
// We are dealing with a template
if (typeof(templateId) !== 'undefined') {
viewer = OC.generateUrl(
'apps/richdocuments/indexTemplate?templateId={templateId}&fileName={fileName}&dir={dir}&requesttoken={requesttoken}',
{
templateId: templateId,
fileName: fileName,
dir: fileDir,
requesttoken: OC.requestToken
}
);
viewer = this.getNewDocumentFromTemplateUrl(templateId, fileName, fileDir);
} else {
viewer = OC.generateUrl(
'apps/richdocuments/index?fileId={fileId}&requesttoken={requesttoken}',
@ -248,7 +264,6 @@ var odfViewer = {
_createDocumentFromTemplate: function(templateId, mimetype, filename) {
OCA.Files.Files.isFileNameValid(filename);
filename = FileList.getUniqueName(filename);
odfViewer.onEdit(filename, {
fileId: -1,
dir: $('#dir').val(),
@ -279,7 +294,7 @@ var odfViewer = {
$(this).ocdialog('close');
}
}];
$('#template-picker').ocdialog({
closeOnEscape: true,
modal: true,
@ -304,7 +319,7 @@ var odfViewer = {
templates.forEach(function(template) {
self._appendTemplateFromData($dlg[0], template);
})
$('body').append($dlg);
})
},
@ -318,13 +333,35 @@ var odfViewer = {
template.onclick = function() {
dlg.dataset.templateId = data.id;
};
dlg.querySelector('.template-container').appendChild(template);
}
};
})(OCA);
OC.Plugins.register('OCA.Files.NewFileMenu', OCA.FilesLOMenu);
// Open the template picker if there was a create parameter detected on load
if (!!(Preload.create && Preload.create.type && Preload.create.filename)) {
var mimetype;
var ext;
switch (type) {
case 'document':
mimetype = docMime;
ext = docExt;
break;
case 'spreadsheet':
mimetype = spreadsheetMime;
ext = spreadsheetExt;
break;
case 'presentation':
mimetype = presentationMime;
ext = presentationExt;
break;
}
OCA.FilesLOMenu._openTemplatePicker(Preload.create.type, mimetype, Preload.create.filename + '.' + ext);
}
}
};
@ -349,7 +386,6 @@ $(document).ready(function() {
if (typeof oc_capabilities === 'undefined') {
getCapabilities = $.get(OC.linkToOCS('cloud', 2) + 'capabilities?format=json', function (data) {
oc_capabilities = data.ocs.data.capabilities;
console.log(oc_capabilities);
})
}
$.when(getSettings, getCapabilities).done(odfViewer.registerFilesMenu)