mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-19 16:42:17 +03:00
4f994a1a17
closes https://github.com/TryGhost/Ghost/issues/8743 - the serializer in our mobiledoc renderer didn't have the list of non-closing HTML tags passed in which meant that tags such as `<br>` in the markdown HTML output were being re-serialized to `<br></br>` which is invalid HTML which (at least Chrome) then attempts to fix by rendering it as `<br><br>` instead - the elements with incorrect rendering that may result in unwanted "fixing" by browsers are `AREA`, `BASE`, `BR`, `COL`, `COMMAND`, `EMBED`, `HR`, `IMG`, `INPUT`, `KEYGEN`, `LINK`, `META`, `PARAM`, `SOURCE`, `TRACK`, and `WBR`
47 lines
1.7 KiB
JavaScript
47 lines
1.7 KiB
JavaScript
var SimpleDom = require('simple-dom'),
|
|
Renderer = require('mobiledoc-dom-renderer').default,
|
|
config = require('../config'),
|
|
logging = require('../logging'),
|
|
errors = require('../errors'),
|
|
defaults = require(config.get('paths').internalAppPath + 'default-cards'),
|
|
options = {
|
|
dom: new SimpleDom.Document(),
|
|
cards: defaults.cards,
|
|
atoms: defaults.atoms,
|
|
unknownCardHandler: function (args) {
|
|
var error = new errors.InternalServerError({message: 'Mobiledoc card \'' + args.env.name + '\' not found.'});
|
|
logging.error(error);
|
|
}
|
|
};
|
|
|
|
// function getCards() {
|
|
// return config.get('apps:internal').reduce(
|
|
// function (cards, appName) {
|
|
// var app = require(path.join(config.get('paths').internalAppPath, appName));
|
|
// if (app.hasOwnProperty('cards')) {
|
|
// cards = cards.concat(app.cards);
|
|
// }
|
|
// return cards;
|
|
// }, [ ]);
|
|
// }
|
|
// function getAtoms() {
|
|
// return config.get('apps:internal').reduce(
|
|
// function (atoms, appName) {
|
|
// var app = require(path.join(config.get('paths').internalAppPath, appName));
|
|
// if (app.hasOwnProperty('atoms')) {
|
|
// atoms = atoms.concat(app.atoms);
|
|
// }
|
|
// return atoms;
|
|
// }, [ ]);
|
|
// }
|
|
|
|
module.exports = {
|
|
render: function (mobiledoc) {
|
|
var renderer = new Renderer(options),
|
|
rendered = renderer.render(mobiledoc),
|
|
serializer = new SimpleDom.HTMLSerializer(SimpleDom.voidMap),
|
|
html = serializer.serializeChildren(rendered.result);
|
|
return html;
|
|
}
|
|
};
|