mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-01-06 22:40:14 -05:00
afbe0c27fb
closes https://github.com/TryGhost/Team/issues/552 Refactors URL transforms so they take place at the model layer rather than the API serializer layer. Continuation of the pattern created for the settings model in https://github.com/TryGhost/Ghost/pull/12738 - Added checks to all front-end tests to ensure output does not contain the magic replacement string - includes failing acceptance test for `__GHOST_URL__` appearing in sitemaps - Removed all transform-ready URL transforms from API serializers - input serializers transform image urls relative->absolute to keep absolute-urls as the consistent "outside of the database" format - output serializers should not need to perform any URL transforms as that will be done at the model layer - Added url transforms to models layer - removes knowledge from the API serializers which shouldn't need to know how data is stored internally in the database - makes absolute urls the consistent "outside of the database" URL format - adds transform step to the sitemap generator because the data used for that is fetched directly via knex which will not run through the bookshelf `parse()` methods
35 lines
894 B
JavaScript
35 lines
894 B
JavaScript
const ghostBookshelf = require('./base');
|
|
const urlUtils = require('../../shared/url-utils');
|
|
|
|
const Snippet = ghostBookshelf.Model.extend({
|
|
tableName: 'snippets',
|
|
|
|
format() {
|
|
const attrs = ghostBookshelf.Model.prototype.format.apply(this, arguments);
|
|
|
|
if (attrs.mobiledoc) {
|
|
attrs.mobiledoc = urlUtils.mobiledocToTransformReady(attrs.mobiledoc);
|
|
}
|
|
|
|
return attrs;
|
|
},
|
|
|
|
parse() {
|
|
const attrs = ghostBookshelf.Model.prototype.parse.apply(this, arguments);
|
|
|
|
if (attrs.mobiledoc) {
|
|
attrs.mobiledoc = urlUtils.transformReadyToAbsolute(attrs.mobiledoc);
|
|
}
|
|
|
|
return attrs;
|
|
}
|
|
});
|
|
|
|
const Snippets = ghostBookshelf.Collection.extend({
|
|
model: Snippet
|
|
});
|
|
|
|
module.exports = {
|
|
Snippet: ghostBookshelf.model('Snippet', Snippet),
|
|
Snippets: ghostBookshelf.collection('Snippets', Snippets)
|
|
};
|