mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-02 19:36:12 +01:00 
			
		
		
		
	import/export refactorign
This commit is contained in:
		@@ -12,7 +12,6 @@ import exportDialog from './dialogs/export.js';
 | 
				
			|||||||
import cloning from './services/cloning.js';
 | 
					import cloning from './services/cloning.js';
 | 
				
			||||||
import contextMenu from './services/tree_context_menu.js';
 | 
					import contextMenu from './services/tree_context_menu.js';
 | 
				
			||||||
import dragAndDropSetup from './services/drag_and_drop.js';
 | 
					import dragAndDropSetup from './services/drag_and_drop.js';
 | 
				
			||||||
import exportService from './services/export.js';
 | 
					 | 
				
			||||||
import link from './services/link.js';
 | 
					import link from './services/link.js';
 | 
				
			||||||
import messagingService from './services/messaging.js';
 | 
					import messagingService from './services/messaging.js';
 | 
				
			||||||
import noteDetailService from './services/note_detail.js';
 | 
					import noteDetailService from './services/note_detail.js';
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,7 @@
 | 
				
			|||||||
import treeService from '../services/tree.js';
 | 
					import treeService from '../services/tree.js';
 | 
				
			||||||
import treeUtils from "../services/tree_utils.js";
 | 
					import treeUtils from "../services/tree_utils.js";
 | 
				
			||||||
import exportService from "../services/export.js";
 | 
					import utils from "../services/utils.js";
 | 
				
			||||||
 | 
					import protectedSessionHolder from "../services/protected_session_holder.js";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const $dialog = $("#export-dialog");
 | 
					const $dialog = $("#export-dialog");
 | 
				
			||||||
const $form = $("#export-form");
 | 
					const $form = $("#export-form");
 | 
				
			||||||
@@ -46,13 +47,19 @@ $form.submit(() => {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    const currentNode = treeService.getCurrentNode();
 | 
					    const currentNode = treeService.getCurrentNode();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    exportService.exportBranch(currentNode.data.branchId, exportType, exportFormat);
 | 
					    exportBranch(currentNode.data.branchId, exportType, exportFormat);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $dialog.modal('hide');
 | 
					    $dialog.modal('hide');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return false;
 | 
					    return false;
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function exportBranch(branchId, type, format) {
 | 
				
			||||||
 | 
					    const url = utils.getHost() + `/api/notes/${branchId}/export/${type}/${format}?protectedSessionId=` + encodeURIComponent(protectedSessionHolder.getProtectedSessionId());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    utils.download(url);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$('input[name=export-type]').change(function () {
 | 
					$('input[name=export-type]').change(function () {
 | 
				
			||||||
    if (this.value === 'subtree') {
 | 
					    if (this.value === 'subtree') {
 | 
				
			||||||
        if ($("input[name=export-subtree-format]:checked").length === 0) {
 | 
					        if ($("input[name=export-subtree-format]:checked").length === 0) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,10 +1,12 @@
 | 
				
			|||||||
import treeService from '../services/tree.js';
 | 
					import treeService from '../services/tree.js';
 | 
				
			||||||
import exportService from "../services/export.js";
 | 
					 | 
				
			||||||
import treeUtils from "../services/tree_utils.js";
 | 
					import treeUtils from "../services/tree_utils.js";
 | 
				
			||||||
 | 
					import server from "../services/server.js";
 | 
				
			||||||
 | 
					import infoService from "../services/info.js";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const $dialog = $("#import-dialog");
 | 
					const $dialog = $("#import-dialog");
 | 
				
			||||||
const $form = $("#import-form");
 | 
					const $form = $("#import-form");
 | 
				
			||||||
const $noteTitle = $dialog.find(".note-title");
 | 
					const $noteTitle = $dialog.find(".note-title");
 | 
				
			||||||
 | 
					const $fileUploadInput = $("#import-file-upload-input");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
async function showDialog() {
 | 
					async function showDialog() {
 | 
				
			||||||
    glob.activeDialog = $dialog;
 | 
					    glob.activeDialog = $dialog;
 | 
				
			||||||
@@ -18,13 +20,44 @@ async function showDialog() {
 | 
				
			|||||||
$form.submit(() => {
 | 
					$form.submit(() => {
 | 
				
			||||||
    const currentNode = treeService.getCurrentNode();
 | 
					    const currentNode = treeService.getCurrentNode();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    exportService.importIntoNote(currentNode.data.noteId).then(() => {
 | 
					    importIntoNote(currentNode.data.noteId);
 | 
				
			||||||
        $dialog.modal('hide');
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return false;
 | 
					    return false;
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function importIntoNote(importNoteId) {
 | 
				
			||||||
 | 
					    const formData = new FormData();
 | 
				
			||||||
 | 
					    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
 | 
				
			||||||
 | 
					    $fileUploadInput.val('');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $.ajax({
 | 
				
			||||||
 | 
					        url: baseApiUrl + 'notes/' + importNoteId + '/import',
 | 
				
			||||||
 | 
					        headers: server.getHeaders(),
 | 
				
			||||||
 | 
					        data: formData,
 | 
				
			||||||
 | 
					        dataType: 'json',
 | 
				
			||||||
 | 
					        type: 'POST',
 | 
				
			||||||
 | 
					        contentType: false, // NEEDED, DON'T REMOVE THIS
 | 
				
			||||||
 | 
					        processData: false, // NEEDED, DON'T REMOVE THIS
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					        .fail((xhr, status, error) => alert('Import error: ' + xhr.responseText))
 | 
				
			||||||
 | 
					        .done(async note => {
 | 
				
			||||||
 | 
					            $dialog.modal('hide');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            infoService.showMessage("Import finished successfully.")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            await treeService.reload();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (note) {
 | 
				
			||||||
 | 
					                const node = await treeService.activateNote(note.noteId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                node.setExpanded(true);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
    showDialog
 | 
					    showDialog
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,46 +0,0 @@
 | 
				
			|||||||
import treeService from './tree.js';
 | 
					 | 
				
			||||||
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());
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    utils.download(url);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
async function importIntoNote(importNoteId) {
 | 
					 | 
				
			||||||
    const formData = new FormData();
 | 
					 | 
				
			||||||
    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
 | 
					 | 
				
			||||||
    $fileUploadInput.val('');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    await $.ajax({
 | 
					 | 
				
			||||||
        url: baseApiUrl + 'notes/' + importNoteId + '/import',
 | 
					 | 
				
			||||||
        headers: server.getHeaders(),
 | 
					 | 
				
			||||||
        data: formData,
 | 
					 | 
				
			||||||
        dataType: 'json',
 | 
					 | 
				
			||||||
        type: 'POST',
 | 
					 | 
				
			||||||
        contentType: false, // NEEDED, DON'T REMOVE THIS
 | 
					 | 
				
			||||||
        processData: false, // NEEDED, DON'T REMOVE THIS
 | 
					 | 
				
			||||||
    })
 | 
					 | 
				
			||||||
        .fail((xhr, status, error) => alert('Import error: ' + xhr.responseText))
 | 
					 | 
				
			||||||
        .done(async note => {
 | 
					 | 
				
			||||||
            await treeService.reload();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (note) {
 | 
					 | 
				
			||||||
                const node = await treeService.activateNote(note.noteId);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                node.setExpanded(true);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default {
 | 
					 | 
				
			||||||
    exportBranch,
 | 
					 | 
				
			||||||
    importIntoNote
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
		Reference in New Issue
	
	Block a user