diff --git a/core/server/helpers/prev_next.js b/core/server/helpers/prev_next.js index 8798b82747..6ba4d7e8ca 100644 --- a/core/server/helpers/prev_next.js +++ b/core/server/helpers/prev_next.js @@ -8,9 +8,10 @@ var api = require('../api'), Promise = require('bluebird'), fetch, prevNext; -fetch = function (options) { - return api.posts.read(options).then(function (result) { +fetch = function (apiOptions, options) { + return api.posts.read(apiOptions).then(function (result) { var related = result.posts[0]; + if (related.previous) { return options.fn(related.previous); } else if (related.next) { @@ -26,10 +27,14 @@ fetch = function (options) { prevNext = function (options) { options = options || {}; - options.include = options.name === 'prev_post' ? 'previous' : 'next'; + + var apiOptions = { + include: options.name === 'prev_post' ? 'previous' : 'next' + }; + if (schema.isPost(this)) { - options.slug = this.slug; - return fetch(options); + apiOptions.slug = this.slug; + return fetch(apiOptions, options); } else { return Promise.resolve(options.inverse(this)); } diff --git a/core/server/models/base.js b/core/server/models/base.js index 13b353210a..06e33b64a6 100644 --- a/core/server/models/base.js +++ b/core/server/models/base.js @@ -138,6 +138,7 @@ ghostBookshelf.Model = ghostBookshelf.Model.extend({ var attrs = _.extend({}, this.attributes), self = this; options = options || {}; + options = _.pick(options, ['shallow', 'baseKey', 'include', 'context']); if (options && options.shallow) { return attrs; @@ -150,9 +151,9 @@ ghostBookshelf.Model = ghostBookshelf.Model.extend({ _.each(this.relations, function (relation, key) { if (key.substring(0, 7) !== '_pivot_') { // if include is set, expand to full object - var fullKey = _.isEmpty(options.name) ? key : options.name + '.' + key; + var fullKey = _.isEmpty(options.baseKey) ? key : options.baseKey + '.' + key; if (_.contains(self.include, fullKey)) { - attrs[key] = relation.toJSON(_.extend({}, options, {name: fullKey, include: self.include})); + attrs[key] = relation.toJSON(_.extend({}, options, {baseKey: fullKey, include: self.include})); } } });