From 45ddfef30aad778b4c5db52b24dac808bc768939 Mon Sep 17 00:00:00 2001 From: zadam Date: Sun, 10 Feb 2019 14:33:13 +0100 Subject: [PATCH] new import dialog --- src/public/javascripts/dialogs/import.js | 30 +++++++++++++++ src/public/javascripts/services/export.js | 20 +++------- .../javascripts/services/tree_context_menu.js | 6 +-- src/routes/api/image.js | 2 +- src/services/import/tar.js | 5 --- src/views/desktop.ejs | 3 +- src/views/dialogs/export.ejs | 2 +- src/views/dialogs/import.ejs | 37 +++++++++++++++++++ 8 files changed, 79 insertions(+), 26 deletions(-) create mode 100644 src/public/javascripts/dialogs/import.js create mode 100644 src/views/dialogs/import.ejs diff --git a/src/public/javascripts/dialogs/import.js b/src/public/javascripts/dialogs/import.js new file mode 100644 index 000000000..4af89849b --- /dev/null +++ b/src/public/javascripts/dialogs/import.js @@ -0,0 +1,30 @@ +import treeService from '../services/tree.js'; +import exportService from "../services/export.js"; +import treeUtils from "../services/tree_utils.js"; + +const $dialog = $("#import-dialog"); +const $form = $("#import-form"); +const $noteTitle = $dialog.find(".note-title"); + +async function showDialog() { + glob.activeDialog = $dialog; + + const currentNode = treeService.getCurrentNode(); + $noteTitle.text(await treeUtils.getNoteTitle(currentNode.data.noteId)); + + $dialog.modal(); +} + +$form.submit(() => { + const currentNode = treeService.getCurrentNode(); + + exportService.importIntoNote(currentNode.data.noteId).then(() => { + $dialog.modal('hide'); + }); + + return false; +}); + +export default { + showDialog +} \ No newline at end of file diff --git a/src/public/javascripts/services/export.js b/src/public/javascripts/services/export.js index e2b02f6a5..578028fdd 100644 --- a/src/public/javascripts/services/export.js +++ b/src/public/javascripts/services/export.js @@ -3,29 +3,21 @@ import protectedSessionHolder from './protected_session_holder.js'; import utils from './utils.js'; import server from './server.js'; +const $fileUploadInput = $("#import-file-upload-input"); + function exportBranch(branchId, type, format) { const url = utils.getHost() + `/api/notes/${branchId}/export/${type}/${format}?protectedSessionId=` + encodeURIComponent(protectedSessionHolder.getProtectedSessionId()); - console.log(url); - utils.download(url); } -let importNoteId; - -function importIntoNote(noteId) { - importNoteId = noteId; - - $("#import-upload").trigger('click'); -} - -$("#import-upload").change(async function() { +async function importIntoNote(importNoteId) { const formData = new FormData(); - formData.append('upload', this.files[0]); + formData.append('upload', $fileUploadInput[0].files[0]); // this is done to reset the field otherwise triggering import same file again would not work // https://github.com/zadam/trilium/issues/388 - $("#import-upload").val(''); + $fileUploadInput.val(''); await $.ajax({ url: baseApiUrl + 'notes/' + importNoteId + '/import', @@ -46,7 +38,7 @@ $("#import-upload").change(async function() { node.setExpanded(true); } }); -}); +} export default { exportBranch, diff --git a/src/public/javascripts/services/tree_context_menu.js b/src/public/javascripts/services/tree_context_menu.js index 01b6fee64..dd3ed8fe2 100644 --- a/src/public/javascripts/services/tree_context_menu.js +++ b/src/public/javascripts/services/tree_context_menu.js @@ -1,12 +1,12 @@ import treeService from './tree.js'; import cloningService from './cloning.js'; -import exportService from './export.js'; import messagingService from './messaging.js'; import protectedSessionService from './protected_session.js'; import treeChangesService from './branches.js'; import treeUtils from './tree_utils.js'; import branchPrefixDialog from '../dialogs/branch_prefix.js'; import exportDialog from '../dialogs/export.js'; +import importDialog from '../dialogs/import.js'; import infoService from "./info.js"; import treeCache from "./tree_cache.js"; import syncService from "./sync.js"; @@ -95,7 +95,7 @@ const contextMenuItems = [ {title: "Paste after", cmd: "pasteAfter", uiIcon: "clipboard"}, {title: "----"}, {title: "Export", cmd: "export", uiIcon: "arrow-up-right"}, - {title: "Import into note (tar, opml, md, enex)", cmd: "importIntoNote", uiIcon: "arrow-down-left"}, + {title: "Import into note", cmd: "importIntoNote", uiIcon: "arrow-down-left"}, {title: "----"}, {title: "Collapse subtree Alt+-", cmd: "collapseSubtree", uiIcon: "align-justify"}, {title: "Force note sync", cmd: "forceNoteSync", uiIcon: "refresh"}, @@ -180,7 +180,7 @@ function selectContextMenuItem(event, cmd) { exportDialog.showDialog("subtree"); } else if (cmd === "importIntoNote") { - exportService.importIntoNote(node.data.noteId); + importDialog.showDialog(); } else if (cmd === "collapseSubtree") { treeService.collapseTree(node); diff --git a/src/routes/api/image.js b/src/routes/api/image.js index f1f2ec8b8..22406e171 100644 --- a/src/routes/api/image.js +++ b/src/routes/api/image.js @@ -21,7 +21,7 @@ async function returnImage(req, res) { res.set('Content-Type', image.mime); - res.send((await note.getNoteContent()).content); + res.send(await image.getContent()); } async function uploadImage(req) { diff --git a/src/services/import/tar.js b/src/services/import/tar.js index b631bbeb8..d6f658044 100644 --- a/src/services/import/tar.js +++ b/src/services/import/tar.js @@ -33,11 +33,6 @@ async function importTar(fileBuffer, importRootNote) { return ""; } - // we allow references to root and they don't need translation - if (origNoteId === 'root') { - return origNoteId; - } - if (!noteIdMap[origNoteId]) { noteIdMap[origNoteId] = utils.newEntityId(); } diff --git a/src/views/desktop.ejs b/src/views/desktop.ejs index a9fa0ad78..55bf0e3e2 100644 --- a/src/views/desktop.ejs +++ b/src/views/desktop.ejs @@ -99,8 +99,6 @@ - - diff --git a/src/views/dialogs/import.ejs b/src/views/dialogs/import.ejs new file mode 100644 index 000000000..07ddcf160 --- /dev/null +++ b/src/views/dialogs/import.ejs @@ -0,0 +1,37 @@ +