mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-22 18:31:57 +03:00
243b387063
refs #8126, #8221, #8223 ✨ New 'Proxy' for all helper requires - this is not currently enforced, but could be, much like apps - the proxy object is HUGE - changed date to use SafeString, this should have been there anyway - use the proxy for all helpers, including those in apps 😁 ✨ 🎨 Single instance of hbs for theme + for errors - we now have theme/engine instead of requiring express-hbs everywhere - only error-handler still also requires express-hbs, this is so that we can render errors without extra crud - TODO: remove the asset helper after #8126 IF it is not needed, or else remove the TODO 🎨 Cleanup visibility utils 🎨 Clean up the proxy a little bit 🚨 Unskip test as it now works! 🎨 Minor amends as per comments
49 lines
1.6 KiB
JavaScript
49 lines
1.6 KiB
JavaScript
// # Body Class Helper
|
|
// Usage: `{{body_class}}`
|
|
//
|
|
// Output classes for the body element
|
|
//
|
|
// We use the name body_class to match the helper for consistency:
|
|
// jscs:disable requireCamelCaseOrUpperCaseIdentifiers
|
|
|
|
var proxy = require('./proxy'),
|
|
_ = require('lodash'),
|
|
SafeString = proxy.SafeString;
|
|
|
|
module.exports = function body_class(options) {
|
|
var classes = [],
|
|
context = options.data.root.context,
|
|
post = this.post,
|
|
tags = this.post && this.post.tags ? this.post.tags : this.tags || [],
|
|
page = this.post && this.post.page ? this.post.page : this.page || false;
|
|
|
|
if (_.includes(context, 'home')) {
|
|
classes.push('home-template');
|
|
} else if (_.includes(context, 'post') && post) {
|
|
classes.push('post-template');
|
|
} else if (_.includes(context, 'page') && page) {
|
|
classes.push('page-template');
|
|
classes.push('page-' + this.post.slug);
|
|
} else if (_.includes(context, 'tag') && this.tag) {
|
|
classes.push('tag-template');
|
|
classes.push('tag-' + this.tag.slug);
|
|
} else if (_.includes(context, 'author') && this.author) {
|
|
classes.push('author-template');
|
|
classes.push('author-' + this.author.slug);
|
|
} else if (_.includes(context, 'private')) {
|
|
classes.push('private-template');
|
|
}
|
|
|
|
if (tags) {
|
|
classes = classes.concat(tags.map(function (tag) { return 'tag-' + tag.slug; }));
|
|
}
|
|
|
|
if (_.includes(context, 'paged')) {
|
|
classes.push('paged');
|
|
}
|
|
|
|
classes = _.reduce(classes, function (memo, item) { return memo + ' ' + item; }, '');
|
|
return new SafeString(classes.trim());
|
|
};
|
|
|