From 568c2c997fc5e505cfc38e5880a95a309a2d4424 Mon Sep 17 00:00:00 2001 From: azivner Date: Mon, 19 Nov 2018 09:54:33 +0100 Subject: [PATCH] possibility to export single code note as markdown. UI fix of disabled buttons --- src/public/javascripts/services/bootstrap.js | 8 +++++++- src/public/javascripts/services/entrypoints.js | 16 ++++++++++++++-- src/services/export/markdown_single.js | 16 ++++++++++++++-- src/views/index.ejs | 2 +- 4 files changed, 36 insertions(+), 6 deletions(-) diff --git a/src/public/javascripts/services/bootstrap.js b/src/public/javascripts/services/bootstrap.js index e873c4dcc..e1a779d3e 100644 --- a/src/public/javascripts/services/bootstrap.js +++ b/src/public/javascripts/services/bootstrap.js @@ -103,7 +103,13 @@ if (utils.isElectron()) { }); } -$("#export-note-to-markdown-button").click(() => exportService.exportSubtree(noteDetailService.getCurrentNoteId(), 'markdown-single')); +$("#export-note-to-markdown-button").click(function () { + if ($(this).hasClass("disabled")) { + return; + } + + exportService.exportSubtree(noteDetailService.getCurrentNoteId(), 'markdown-single') +}); treeService.showTree(); diff --git a/src/public/javascripts/services/entrypoints.js b/src/public/javascripts/services/entrypoints.js index f62e42135..d3a4a4e74 100644 --- a/src/public/javascripts/services/entrypoints.js +++ b/src/public/javascripts/services/entrypoints.js @@ -25,9 +25,21 @@ function registerEntrypoints() { $("#jump-to-note-dialog-button").click(jumpToNoteDialog.showDialog); utils.bindShortcut('ctrl+j', jumpToNoteDialog.showDialog); - $("#show-note-revisions-button").click(noteRevisionsDialog.showCurrentNoteRevisions); + $("#show-note-revisions-button").click(function() { + if ($(this).hasClass("disabled")) { + return; + } - $("#show-source-button").click(noteSourceDialog.showDialog); + noteRevisionsDialog.showCurrentNoteRevisions(); + }); + + $("#show-source-button").click(function() { + if ($(this).hasClass("disabled")) { + return; + } + + noteSourceDialog.showDialog(); + }); $("#recent-changes-button").click(recentChangesDialog.showDialog); diff --git a/src/services/export/markdown_single.js b/src/services/export/markdown_single.js index ceb14b553..7e878094c 100644 --- a/src/services/export/markdown_single.js +++ b/src/services/export/markdown_single.js @@ -4,8 +4,20 @@ const sanitize = require("sanitize-filename"); const TurndownService = require('turndown'); async function exportSingleMarkdown(note, res) { - const turndownService = new TurndownService(); - const markdown = turndownService.turndown(note.content); + if (note.type !== 'text' && note.type !== 'code') { + return [400, `Note type ${note.type} cannot be exported as single markdown file.`]; + } + + let markdown; + + if (note.type === 'code') { + markdown = '```\n' + note.content + "\n```"; + } + else if (note.type === 'text') { + const turndownService = new TurndownService(); + markdown = turndownService.turndown(note.content); + } + const name = sanitize(note.title); res.setHeader('Content-Disposition', 'file; filename="' + name + '.md"'); diff --git a/src/views/index.ejs b/src/views/index.ejs index 4bfb68650..bf16e394a 100644 --- a/src/views/index.ejs +++ b/src/views/index.ejs @@ -159,7 +159,7 @@ Alt+A Attributes HTML source Upload file - Export as markdown + Export as markdown