Skip to content

Instantly share code, notes, and snippets.

@iamnasirudeen
Forked from kosson/redincredid.ctrl.js
Created February 3, 2020 08:53
Show Gist options
  • Save iamnasirudeen/17a91510f2256bae67031d400539b40b to your computer and use it in GitHub Desktop.
Save iamnasirudeen/17a91510f2256bae67031d400539b40b to your computer and use it in GitHub Desktop.
This is how content data generated by Editor.js could be transformed back into html.
const resursaModel = require('../../models/resursa-red');
const competenteS = require('../../models/competenta-specifica');
module.exports = (params) => {
return resursaModel.find({_id: params.idres}).populate({
path: 'competenteS'
}).exec().then( (resursa) => {
// console.log(resursa);
if (resursa[0].content) {
let articleHTML = '';
resursa[0].content.blocks.map(obj => {
switch (obj.type) {
case 'paragraph':
articleHTML += `<div class="ce-block">
<div class="ce-block__content">
<div class="ce-paragraph cdx-block">
<p>${obj.data.text}</p>
</div>
</div>
</div>\n`;
break;
case 'image':
articleHTML += `<div class="ce-block">
<div class="ce-block__content">
<div class="ce-paragraph cdx-block">
<figure>
<img src="${obj.data.file.url}" alt="${obj.data.caption}" width="300"/>
<figcaption class="text-center">
${obj.data.caption}
</figcaption>
</figure>
</div>
</div>
</div>\n`;
break;
case 'header':
articleHTML += `<div class="ce-block">
<div class="ce-block__content">
<div class="ce-paragraph cdx-block">
<h${obj.data.level}>${obj.data.text}</h${obj.data.level}>
</div>
</div>
</div>\n`;
break;
case 'raw':
articleHTML += `<div class="ce-block">
<div class="ce-block__content">
<div class="ce-code">
<code>${obj.data.html}</code>
</div>
</div>
</div>\n`;
break;
case 'code':
articleHTML += `<div class="ce-block">
<div class="ce-block__content">
<div class="ce-code">
<code>${obj.data.code}</code>
</div>
</div>
</div>\n`;
break;
case 'list':
if (obj.data.style === 'unordered') {
const list = obj.data.items.map(item => {
return `<li class="cdx-list__item">${item}</li>`;
});
articleHTML += `<div class="ce-block">
<div class="ce-block__content">
<div class="ce-paragraph cdx-block">
<ul class="cdx-list--unordered">${list.join('')}</ul>
</div>
</div>
</div>\n`;
} else {
const list = obj.data.items.map(item => {
return `<li class="cdx-list__item">${item}</li>`;
});
articleHTML += `<div class="ce-block">
<div class="ce-block__content">
<div class="ce-paragraph cdx-block">
<ol class="cdx-list--ordered">${list}</ol>
</div>
</div>
</div>\n`;
}
break;
case 'delimeter':
articleHTML += `<div class="ce-block">
<div class="ce-block__content">
<div class="ce-delimiter cdx-block"></div>
</div>
</div>\n`;
break;
case 'attaches':
articleHTML += `<div class="ce-block">
<div class="ce-block__content">
<a href="${obj.data.file.url}">${obj.data.file.name}</a>
</div>
</div>\n`;
break;
case 'embed':
articleHTML += `<div class="ce-block">
<div class="ce-block__content">
<iframe width="${obj.data.width}"
height="${obj.data.height}"
src="${obj.data.source}"
frameborder="0"
allow="accelerometer;
autoplay;
encrypted-media;
gyroscope;
picture-in-picture"
allowfullscreen>
</iframe>
<strong>${obj.data.caption}</strong>
</div>
</div>\n`;
break;
default:
return '';
}
});
resursa[0].content = articleHTML;
}
return resursa;
});
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment