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:
parent
646a49039e
commit
5b96c82627
5 changed files with 25 additions and 25 deletions
|
@ -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);
|
||||
});
|
||||
|
|
|
@ -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')
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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, '']
|
||||
]]
|
||||
]
|
||||
};
|
||||
}
|
||||
};
|
||||
|
|
|
@ -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.',
|
||||
|
|
Loading…
Add table
Reference in a new issue