mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-02-17 23:44:39 -05:00
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
38 lines
959 B
JavaScript
38 lines
959 B
JavaScript
const ghostBookshelf = require('./base');
|
|
const urlUtils = require('../../shared/url-utils');
|
|
|
|
const PostsMeta = ghostBookshelf.Model.extend({
|
|
tableName: 'posts_meta',
|
|
|
|
format() {
|
|
const attrs = ghostBookshelf.Model.prototype.format.apply(this, arguments);
|
|
|
|
['og_image', 'twitter_image'].forEach((attr) => {
|
|
if (attrs[attr]) {
|
|
attrs[attr] = urlUtils.toTransformReady(attrs[attr]);
|
|
}
|
|
});
|
|
|
|
return attrs;
|
|
},
|
|
|
|
parse() {
|
|
const attrs = ghostBookshelf.Model.prototype.parse.apply(this, arguments);
|
|
|
|
['og_image', 'twitter_image'].forEach((attr) => {
|
|
if (attrs[attr]) {
|
|
attrs[attr] = urlUtils.transformReadyToAbsolute(attrs[attr]);
|
|
}
|
|
});
|
|
|
|
return attrs;
|
|
}
|
|
}, {
|
|
post() {
|
|
return this.belongsTo('Post');
|
|
}
|
|
});
|
|
|
|
module.exports = {
|
|
PostsMeta: ghostBookshelf.model('PostsMeta', PostsMeta)
|
|
};
|