From 9e97fdcc498bdc703a3a45b7bef40339f759e781 Mon Sep 17 00:00:00 2001 From: zadam Date: Sun, 1 Nov 2020 20:38:39 +0100 Subject: [PATCH] convert H1 to H2 also during import --- src/services/html_sanitizer.js | 3 +-- src/services/import/single.js | 17 ++++++++++++++++- src/services/import/zip.js | 2 +- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/services/html_sanitizer.js b/src/services/html_sanitizer.js index 89727ba1e..fb396e9e8 100644 --- a/src/services/html_sanitizer.js +++ b/src/services/html_sanitizer.js @@ -5,8 +5,7 @@ const sanitizeHtml = require('sanitize-html'); function sanitize(dirtyHtml) { return sanitizeHtml(dirtyHtml, { allowedTags: [ - // h1 is removed since that should be note's title - 'h2', 'h3', 'h4', 'h5', 'h6', 'blockquote', 'p', 'a', 'ul', 'ol', + 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'blockquote', 'p', 'a', 'ul', 'ol', 'li', 'b', 'i', 'strong', 'em', 'strike', 'abbr', 'code', 'hr', 'br', 'div', 'table', 'thead', 'caption', 'tbody', 'tr', 'th', 'td', 'pre', 'section', 'img', 'figure', 'span', 'label', 'input' diff --git a/src/services/import/single.js b/src/services/import/single.js index 7270a5258..b693d82fb 100644 --- a/src/services/import/single.js +++ b/src/services/import/single.js @@ -117,6 +117,8 @@ function convertTextToHtml(text) { } function importMarkdown(taskContext, file, parentNote) { + const title = utils.getNoteTitle(file.originalname, taskContext.data.replaceUnderscoresWithSpaces); + const markdownContent = file.buffer.toString("UTF-8"); const reader = new commonmark.Parser(); @@ -127,7 +129,7 @@ function importMarkdown(taskContext, file, parentNote) { htmlContent = htmlSanitizer.sanitize(htmlContent); - const title = utils.getNoteTitle(file.originalname, taskContext.data.replaceUnderscoresWithSpaces); + htmlContent = handleH1(htmlContent, title); const {note} = noteService.createNewNote({ parentNoteId: parentNote.noteId, @@ -143,12 +145,25 @@ function importMarkdown(taskContext, file, parentNote) { return note; } +function handleH1(content, title) { + content = content.replace(/

([^<]*)<\/h1>/gi, (match, text) => { + if (title.trim() === text.trim()) { + return ""; // remove whole H1 tag + } else { + return `

${text}

`; + } + }); + return content; +} + function importHtml(taskContext, file, parentNote) { const title = utils.getNoteTitle(file.originalname, taskContext.data.replaceUnderscoresWithSpaces); let content = file.buffer.toString("UTF-8"); content = htmlSanitizer.sanitize(content); + content = handleH1(content, title); + const {note} = noteService.createNewNote({ parentNoteId: parentNote.noteId, title, diff --git a/src/services/import/zip.js b/src/services/import/zip.js index 58fcf0893..ddbe47610 100644 --- a/src/services/import/zip.js +++ b/src/services/import/zip.js @@ -275,7 +275,7 @@ async function importZip(taskContext, fileBuffer, importRootNote) { return ""; // remove whole H1 tag } else { - return match; + return `

${text}

`; } });