0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-03-11 02:12:21 -05:00

Moved blank mobiledoc document out of mobiledocHtmlRenderer

no issue

- the blank document we use in Ghost is not specific to the html renderer
- renamed from `structure` to `document` to better represent its intent
- allows for easier extraction of `mobiledocHtmlRenderer`
This commit is contained in:
Kevin Ansfield 2020-04-08 16:42:55 +01:00
parent 646a49039e
commit 5b96c82627
5 changed files with 25 additions and 25 deletions

View file

@ -2,7 +2,7 @@ const debug = require('ghost-ignition').debug('importer:posts');
const _ = require('lodash');
const uuid = require('uuid');
const BaseImporter = require('./base');
const renderers = require('../../../../lib/mobiledoc/renderers');
const mobiledocLib = require('../../../../lib/mobiledoc');
const validation = require('../../../validation');
const postsMetaSchema = require('../../../schema').tables.posts_meta;
const metaAttrs = _.keys(_.omit(postsMetaSchema, ['id']));
@ -200,11 +200,11 @@ class PostsImporter extends BaseImporter {
mobiledoc = JSON.parse(model.mobiledoc);
if (!mobiledoc.cards || !_.isArray(mobiledoc.cards)) {
model.mobiledoc = renderers.mobiledocHtmlRenderer.blankStructure();
model.mobiledoc = mobiledocLib.blankDocument;
mobiledoc = model.mobiledoc;
}
} catch (err) {
mobiledoc = renderers.mobiledocHtmlRenderer.blankStructure();
mobiledoc = mobiledocLib.blankDocument;
}
mobiledoc.cards.forEach((card) => {
@ -216,7 +216,7 @@ class PostsImporter extends BaseImporter {
});
model.mobiledoc = JSON.stringify(mobiledoc);
model.html = renderers.mobiledocHtmlRenderer.render(JSON.parse(model.mobiledoc));
model.html = mobiledocLib.renderers.mobiledocHtmlRenderer.render(JSON.parse(model.mobiledoc));
}
this.sanitizePostsMeta(model);
});

View file

@ -1,7 +1,7 @@
const _ = require('lodash'),
Promise = require('bluebird'),
common = require('../../../../lib/common'),
renderers = require('../../../../lib/mobiledoc/renderers'),
mobiledocLib = require('../../../../lib/mobiledoc'),
message1 = 'Updating posts: apply new editor format and set comment_id field.',
message2 = 'Updated posts: apply new editor format and set comment_id field.',
message3 = 'Rollback: Updating posts: use old editor format',
@ -50,18 +50,18 @@ module.exports.up = (options) => {
mobiledoc = JSON.parse(post.mobiledoc || null);
if (!mobiledoc) {
mobiledoc = renderers.mobiledocHtmlRenderer.blankStructure();
mobiledoc = mobiledocLib.blankDocument;
}
} catch (err) {
common.logging.warn(`Invalid mobiledoc structure for ${post.id}. Falling back to blank structure.`);
mobiledoc = renderers.mobiledocHtmlRenderer.blankStructure();
mobiledoc = mobiledocLib.blankDocument;
}
// CASE: convert all old editor posts to the new editor format
// CASE: if mobiledoc field is null, we auto set a blank structure in the model layer
// CASE: if html field is null, we auto generate the html in the model layer
if (mobiledoc && post.html && post.html.match(/^<div class="kg-card-markdown">/)) {
html = renderers.mobiledocHtmlRenderer.render(mobiledoc);
html = mobiledocLib.renderers.mobiledocHtmlRenderer.render(mobiledoc);
}
return localOptions
.transacting('posts')

View file

@ -4,6 +4,20 @@ const config = require('../../config');
let cardFactory, cards;
module.exports = {
get blankDocument() {
return {
version: '0.3.1',
markups: [],
atoms: [],
cards: [],
sections: [
[1, 'p', [
[0, [], 0, '']
]]
]
};
},
get cards() {
if (cards) {
return cards;

View file

@ -111,19 +111,5 @@ module.exports = {
modifier.modifyChildren(rendered.result);
return serializer.serializeChildren(rendered.result);
},
blankStructure() {
return {
version: '0.3.1',
markups: [],
atoms: [],
cards: [],
sections: [
[1, 'p', [
[0, [], 0, '']
]]
]
};
}
};

View file

@ -9,7 +9,7 @@ const htmlToText = require('html-to-text');
const ghostBookshelf = require('./base');
const config = require('../config');
const settingsCache = require('../services/settings/cache');
const renderers = require('../lib/mobiledoc/renderers');
const mobiledocLib = require('../lib/mobiledoc');
const relations = require('./relations');
const urlUtils = require('../lib/url-utils');
const MOBILEDOC_REVISIONS_COUNT = 10;
@ -365,7 +365,7 @@ Post = ghostBookshelf.Model.extend({
}
if (!this.get('mobiledoc')) {
this.set('mobiledoc', JSON.stringify(renderers.mobiledocHtmlRenderer.blankStructure()));
this.set('mobiledoc', JSON.stringify(mobiledocLib.blankDocument));
}
// ensure all URLs are stored as relative
@ -405,7 +405,7 @@ Post = ghostBookshelf.Model.extend({
// CASE: html is null, but mobiledoc exists (only important for migrations & importing)
if (this.hasChanged('mobiledoc') || (!this.get('html') && (options.migrating || options.importing))) {
try {
this.set('html', renderers.mobiledocHtmlRenderer.render(JSON.parse(this.get('mobiledoc'))));
this.set('html', mobiledocLib.renderers.mobiledocHtmlRenderer.render(JSON.parse(this.get('mobiledoc'))));
} catch (err) {
throw new common.errors.ValidationError({
message: 'Invalid mobiledoc structure.',