diff --git a/src/public/app/dialogs/import.js b/src/public/app/dialogs/import.js deleted file mode 100644 index b37ca63c0..000000000 --- a/src/public/app/dialogs/import.js +++ /dev/null @@ -1,76 +0,0 @@ -import utils from '../services/utils.js'; -import treeService from "../services/tree.js"; -import importService from "../services/import.js"; -import options from "../services/options.js"; - -const $dialog = $("#import-dialog"); -const $form = $("#import-form"); -const $noteTitle = $dialog.find(".import-note-title"); -const $fileUploadInput = $("#import-file-upload-input"); -const $importButton = $("#import-button"); -const $safeImportCheckbox = $("#safe-import-checkbox"); -const $shrinkImagesWrapper = $("shrink-images-wrapper"); -const $shrinkImagesCheckbox = $("#shrink-images-checkbox"); -const $textImportedAsTextCheckbox = $("#text-imported-as-text-checkbox"); -const $codeImportedAsCodeCheckbox = $("#code-imported-as-code-checkbox"); -const $explodeArchivesCheckbox = $("#explode-archives-checkbox"); -const $replaceUnderscoresWithSpacesCheckbox = $("#replace-underscores-with-spaces-checkbox"); -const $csrf = $("#import-csrf"); - -let parentNoteId = null; - -export async function showDialog(noteId) { - $fileUploadInput.val('').trigger('change'); // to trigger Import button disabling listener below - - $safeImportCheckbox.prop("checked", true); - $shrinkImagesCheckbox.prop("checked", options.is('compressImages')); - $textImportedAsTextCheckbox.prop("checked", true); - $codeImportedAsCodeCheckbox.prop("checked", true); - $explodeArchivesCheckbox.prop("checked", true); - $replaceUnderscoresWithSpacesCheckbox.prop("checked", true); - - parentNoteId = noteId; - - $noteTitle.text(await treeService.getNoteTitle(parentNoteId)); - - utils.openDialog($dialog); -} - -$form.on('submit', () => { - // disabling so that import is not triggered again. - $importButton.attr("disabled", "disabled"); - - importIntoNote(parentNoteId); - - return false; -}); - -async function importIntoNote(parentNoteId) { - const files = Array.from($fileUploadInput[0].files); // shallow copy since we're resetting the upload button below - - const options = { - safeImport: boolToString($safeImportCheckbox), - shrinkImages: boolToString($shrinkImagesCheckbox), - textImportedAsText: boolToString($textImportedAsTextCheckbox), - codeImportedAsCode: boolToString($codeImportedAsCodeCheckbox), - explodeArchives: boolToString($explodeArchivesCheckbox), - replaceUnderscoresWithSpaces: boolToString($replaceUnderscoresWithSpacesCheckbox) - }; - - $dialog.modal('hide'); - - await importService.uploadFiles(parentNoteId, files, options); -} - -function boolToString($el) { - return $el.is(":checked") ? "true" : "false"; -} - -$fileUploadInput.on('change', () => { - if ($fileUploadInput.val()) { - $importButton.removeAttr("disabled"); - } - else { - $importButton.attr("disabled", "disabled"); - } -}); diff --git a/src/public/app/layouts/desktop_layout.js b/src/public/app/layouts/desktop_layout.js index 9ae5a736a..e92ac7609 100644 --- a/src/public/app/layouts/desktop_layout.js +++ b/src/public/app/layouts/desktop_layout.js @@ -65,6 +65,7 @@ import JumpToNoteDialog from "../widgets/dialogs/jump_to_note.js"; import AddLinkDialog from "../widgets/dialogs/add_link.js"; import CloneToDialog from "../widgets/dialogs/clone_to.js"; import MoveToDialog from "../widgets/dialogs/move_to.js"; +import ImportDialog from "../widgets/dialogs/import.js"; export default class DesktopLayout { constructor(customWidgets) { @@ -204,6 +205,7 @@ export default class DesktopLayout { .child(new JumpToNoteDialog()) .child(new AddLinkDialog()) .child(new CloneToDialog()) - .child(new MoveToDialog()); + .child(new MoveToDialog()) + .child(new ImportDialog()); } } diff --git a/src/public/app/widgets/buttons/note_actions.js b/src/public/app/widgets/buttons/note_actions.js index 80001dead..89bac66df 100644 --- a/src/public/app/widgets/buttons/note_actions.js +++ b/src/public/app/widgets/buttons/note_actions.js @@ -57,7 +57,7 @@ export default class NoteActionsWidget extends NoteContextAwareWidget { }); this.$importNoteButton = this.$widget.find('.import-files-button'); - this.$importNoteButton.on("click", () => import('../../dialogs/import.js').then(d => d.showDialog(this.noteId))); + this.$importNoteButton.on("click", () => this.triggerCommand("showImportDialog", {noteId: this.noteId})); this.$widget.on('click', '.dropdown-item', () => this.$widget.find("[data-toggle='dropdown']").dropdown('toggle')); diff --git a/src/public/app/widgets/dialogs/import.js b/src/public/app/widgets/dialogs/import.js new file mode 100644 index 000000000..087f48673 --- /dev/null +++ b/src/public/app/widgets/dialogs/import.js @@ -0,0 +1,155 @@ +import utils from '../../services/utils.js'; +import treeService from "../../services/tree.js"; +import importService from "../../services/import.js"; +import options from "../../services/options.js"; +import BasicWidget from "../basic_widget.js"; + +const TPL = ` +