diff --git a/src/node/utils/ImportEtherpad.js b/src/node/utils/ImportEtherpad.js index 7f5c2ab2d..d47443733 100644 --- a/src/node/utils/ImportEtherpad.js +++ b/src/node/utils/ImportEtherpad.js @@ -18,15 +18,14 @@ const db = require('../db/DB'); const hooks = require('../../static/js/pluginfw/hooks'); +const supportedElems = require('../../static/js/contentcollector').supportedElems; exports.setPadRaw = (padId, r) => { const records = JSON.parse(r); - const blockElems = ['div', 'br', 'p', 'pre', 'li', 'author', 'lmkr', 'insertorder']; - // get supported block Elements from plugins, we will use this later. hooks.callAll('ccRegisterBlockElements').forEach((element) => { - blockElems.push(element); + supportedElems.push(element); }); Object.keys(records).forEach(async (key) => { @@ -65,7 +64,7 @@ exports.setPadRaw = (padId, r) => { if (value.pool) { for (const attrib of Object.keys(value.pool.numToAttrib)) { const attribName = value.pool.numToAttrib[attrib][0]; - if (blockElems.indexOf(attribName) === -1) { + if (supportedElems.indexOf(attribName) === -1) { console.warn('Plugin missing: ' + `You might want to install a plugin to support this node name: ${attribName}`); } diff --git a/src/static/js/contentcollector.js b/src/static/js/contentcollector.js index c250008bb..cf921cd47 100644 --- a/src/static/js/contentcollector.js +++ b/src/static/js/contentcollector.js @@ -55,6 +55,28 @@ const getAttribute = (n, a) => { if (n.attribs != null) return n.attribs[a]; return null; }; +// supportedElems are Supported natively within Etherpad and don't require a plugin +const supportedElems = [ + 'author', + 'b', + 'bold', + 'br', + 'div', + 'font', + 'i', + 'insertorder', + 'italic', + 'li', + 'lmkr', + 'ol', + 'p', + 'pre', + 'strong', + 's', + 'span', + 'u', + 'ul', +]; const makeContentCollector = (collectStyles, abrowser, apool, className2Author) => { const _blockElems = { @@ -66,6 +88,7 @@ const makeContentCollector = (collectStyles, abrowser, apool, className2Author) hooks.callAll('ccRegisterBlockElements').forEach((element) => { _blockElems[element] = 1; + supportedElems.push(element); }); const isBlockElement = (n) => !!_blockElems[tagName(n) || '']; @@ -315,9 +338,11 @@ const makeContentCollector = (collectStyles, abrowser, apool, className2Author) const localAttribs = state.localAttribs; state.localAttribs = null; const isBlock = isBlockElement(node); - if (!isBlock && node.name && (node.name !== 'body') && (node.name !== 'br')) { - console.warn('Plugin missing: ' + + if (!isBlock && node.name && (node.name !== 'body')) { + if (supportedElems.indexOf(node.name) === -1) { + console.warn('Plugin missing: ' + `You might want to install a plugin to support this node name: ${node.name}`); + } } const isEmpty = _isEmpty(node, state); if (isBlock) _ensureColumnZero(state); @@ -701,3 +726,4 @@ const makeContentCollector = (collectStyles, abrowser, apool, className2Author) exports.sanitizeUnicode = sanitizeUnicode; exports.makeContentCollector = makeContentCollector; +exports.supportedElems = supportedElems;