mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-01-20 22:42:53 -05:00
10fc320cc8
no issue - In Ghost, 'context' means the page or section of a blog we're currently within when rendering a theme, e.g. 'post' or 'tag' or 'home'. - In handlebars 'context' refers to the blob of JSON that is tied to a template. - These two uses of the word 'context' have gotten very confusing, so I've removed all usage of 'context' within the Ghost handlebars helpers, EXCEPT where they actually refer to the current context (e.g. the is helper)
45 lines
1.6 KiB
JavaScript
45 lines
1.6 KiB
JavaScript
// ### Pagination Helper
|
|
// `{{pagination}}`
|
|
// Outputs previous and next buttons, along with info about the current page
|
|
|
|
var _ = require('lodash'),
|
|
errors = require('../errors'),
|
|
template = require('./template'),
|
|
i18n = require('../i18n'),
|
|
pagination;
|
|
|
|
pagination = function (options) {
|
|
/*jshint unused:false*/
|
|
if (!_.isObject(this.pagination) || _.isFunction(this.pagination)) {
|
|
return errors.logAndThrowError(i18n.t('warnings.helpers.pagination.invalidData'));
|
|
}
|
|
|
|
if (_.isUndefined(this.pagination.page) || _.isUndefined(this.pagination.pages) ||
|
|
_.isUndefined(this.pagination.total) || _.isUndefined(this.pagination.limit)) {
|
|
return errors.logAndThrowError(i18n.t('warnings.helpers.pagination.valuesMustBeDefined'));
|
|
}
|
|
|
|
if ((!_.isNull(this.pagination.next) && !_.isNumber(this.pagination.next)) ||
|
|
(!_.isNull(this.pagination.prev) && !_.isNumber(this.pagination.prev))) {
|
|
return errors.logAndThrowError(i18n.t('warnings.helpers.pagination.nextPrevValuesMustBeNumeric'));
|
|
}
|
|
|
|
if (!_.isNumber(this.pagination.page) || !_.isNumber(this.pagination.pages) ||
|
|
!_.isNumber(this.pagination.total) || !_.isNumber(this.pagination.limit)) {
|
|
return errors.logAndThrowError(i18n.t('warnings.helpers.pagination.valuesMustBeNumeric'));
|
|
}
|
|
|
|
var data = _.merge({}, this.pagination);
|
|
|
|
if (this.tag !== undefined) {
|
|
data.tagSlug = this.tag.slug;
|
|
}
|
|
|
|
if (this.author !== undefined) {
|
|
data.authorSlug = this.author.slug;
|
|
}
|
|
|
|
return template.execute('pagination', data, options);
|
|
};
|
|
|
|
module.exports = pagination;
|