mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 10:26:08 +01:00 
			
		
		
		
	export WIP + some unrelated changes
This commit is contained in:
		| @@ -0,0 +1 @@ | ||||
| UPDATE attributes SET name = 'archived' where name = 'hideInAutocomplete'; | ||||
| @@ -695,3 +695,7 @@ div[data-notify="container"] { | ||||
|     padding-left: 40px; | ||||
|     display: none; | ||||
| } | ||||
|  | ||||
| #export-form .form-check-label { | ||||
|     padding: 2px; | ||||
| } | ||||
| @@ -3,7 +3,7 @@ | ||||
| const build = require('./build'); | ||||
| const packageJson = require('../../package'); | ||||
|  | ||||
| const APP_DB_VERSION = 119; | ||||
| const APP_DB_VERSION = 120; | ||||
| const SYNC_VERSION = 2; | ||||
|  | ||||
| module.exports = { | ||||
|   | ||||
| @@ -12,17 +12,24 @@ const TurndownService = require('turndown'); | ||||
| async function exportToTar(branch, format, res) { | ||||
|     const turndownService = new TurndownService(); | ||||
|  | ||||
|     // path -> number of occurences | ||||
|     const existingPaths = {}; | ||||
|  | ||||
|     const pack = tar.pack(); | ||||
|  | ||||
|     const exportedNoteIds = []; | ||||
|     const name = await exportNoteInner(branch, ''); | ||||
|  | ||||
|     async function exportNoteInner(branch, directory) { | ||||
|     function getUniqueFilename(fileName) { | ||||
|  | ||||
|     } | ||||
|  | ||||
|     async function exportNoteInner(branch, directory, existingNames) { | ||||
|         const note = await branch.getNote(); | ||||
|         const childFileName = directory + sanitize(note.title); | ||||
|         const baseFileName = directory + sanitize(note.title); | ||||
|  | ||||
|         if (exportedNoteIds.includes(note.noteId)) { | ||||
|             saveMetadataFile(childFileName, { | ||||
|             saveMetadataFile(baseFileName, { | ||||
|                 version: 1, | ||||
|                 clone: true, | ||||
|                 noteId: note.noteId, | ||||
| @@ -67,26 +74,27 @@ async function exportToTar(branch, format, res) { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         saveMetadataFile(childFileName, metadata); | ||||
|         saveDataFile(childFileName, note); | ||||
|         saveMetadataFile(baseFileName, metadata); | ||||
|         saveDataFile(baseFileName, note); | ||||
|  | ||||
|         exportedNoteIds.push(note.noteId); | ||||
|  | ||||
|         const childBranches = await note.getChildBranches(); | ||||
|  | ||||
|         if (childBranches.length > 0) { | ||||
|             saveDirectory(childFileName); | ||||
|             saveDirectory(baseFileName); | ||||
|         } | ||||
|  | ||||
|         for (const childBranch of childBranches) { | ||||
|             await exportNoteInner(await childBranch.getNote(), childBranch, childFileName + "/"); | ||||
|             await exportNoteInner(childBranch, baseFileName + "/"); | ||||
|         } | ||||
|  | ||||
|         return childFileName; | ||||
|         return baseFileName; | ||||
|     } | ||||
|  | ||||
|     function saveDataFile(childFileName, note) { | ||||
|         let content = note.content; | ||||
|         let extension; | ||||
|  | ||||
|         if (note.type === 'text') { | ||||
|             if (format === 'html') { | ||||
| @@ -94,15 +102,18 @@ async function exportToTar(branch, format, res) { | ||||
|             } | ||||
|             else if (format === 'markdown') { | ||||
|                 content = turndownService.turndown(note.content); | ||||
|                 extension = 'md'; | ||||
|             } | ||||
|             else { | ||||
|                 throw new Error("Unknown format: " + format); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         const extension = mimeTypes.extension(note.mime) | ||||
|         if (!extension) { | ||||
|             extension = mimeTypes.extension(note.mime) | ||||
|                 || getExceptionalExtension(note.mime) | ||||
|                 || "dat"; | ||||
|         } | ||||
|  | ||||
|         if (!childFileName.toLowerCase().endsWith(extension)) { | ||||
|             childFileName += "." + extension; | ||||
| @@ -117,14 +128,14 @@ async function exportToTar(branch, format, res) { | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     function saveMetadataFile(childFileName, metadata) { | ||||
|     function saveMetadataFile(baseFileName, metadata) { | ||||
|         const metadataJson = JSON.stringify(metadata, null, '\t'); | ||||
|  | ||||
|         pack.entry({name: childFileName + ".meta", size: metadataJson.length}, metadataJson); | ||||
|         pack.entry({name: getUniqueFilename(baseFileName + ".meta"), size: metadataJson.length}, metadataJson); | ||||
|     } | ||||
|  | ||||
|     function saveDirectory(childFileName) { | ||||
|         pack.entry({name: childFileName, type: 'directory'}); | ||||
|     function saveDirectory(baseFileName) { | ||||
|         pack.entry({name: baseFileName, type: 'directory'}); | ||||
|     } | ||||
|  | ||||
|     pack.finalize(); | ||||
|   | ||||
| @@ -53,7 +53,7 @@ | ||||
|  | ||||
|           <a id="collapse-tree-button" title="Collapse note tree. Shortcut ALT+C" class="icon-action jam jam-align-justify"></a> | ||||
|  | ||||
|           <a id="scroll-to-current-note-button" title="Scroll to current note. Shortcut CTRL+." class="icon-action jam jam-target"></a> | ||||
|           <a id="scroll-to-current-note-button" title="Scroll to current note. Shortcut CTRL+." class="icon-action jam jam-download"></a> | ||||
|  | ||||
|           <a id="toggle-search-button" title="Search in notes. Shortcut CTRL+S" class="icon-action jam jam-search"></a> | ||||
|         </div> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user