mirror of
https://github.com/zadam/trilium.git
synced 2025-06-05 01:18:44 +02:00
export WIP + some unrelated changes
This commit is contained in:
parent
e09b61d1ac
commit
551e1255ff
@ -0,0 +1 @@
|
||||
UPDATE attributes SET name = 'archived' where name = 'hideInAutocomplete';
|
@ -694,4 +694,8 @@ div[data-notify="container"] {
|
||||
#export-form .format-choice {
|
||||
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)
|
||||
|| getExceptionalExtension(note.mime)
|
||||
|| "dat";
|
||||
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>
|
||||
|
Loading…
x
Reference in New Issue
Block a user