Ghost/core/frontend/helpers/content.js
Rishabh Garg 82bb466316
Removed hardcoded accent color fallbacks (#12813)
refs https://github.com/TryGhost/Team/issues/536

From 4.0, we ensure and require that accent colour is always set. This change removes hardcoded accent color fallbacks to avoid confusion as well as cause accidental fallback that is undesired causing themes to look different
2021-03-24 18:25:26 +05:30

59 lines
1.7 KiB
JavaScript

// # Content Helper
// Usage: `{{content}}`, `{{content words="20"}}`, `{{content characters="256"}}`
//
// Turns content html into a safestring so that the user doesn't have to
// escape it or tell handlebars to leave it alone with a triple-brace.
//
// Shows default or custom CTA when trying to see content without access
//
// Enables tag-safe truncation of content by characters or words.
//
// Dev flag feature: In case of restricted content access for member-only posts, shows CTA box
const {templates, hbs, SafeString} = require('../services/proxy');
const downsize = require('downsize');
const _ = require('lodash');
const createFrame = hbs.handlebars.createFrame;
function restrictedCta(options) {
options = options || {};
options.data = options.data || {};
_.merge(this, {
accentColor: (options.data.site && options.data.site.accent_color)
});
const data = createFrame(options.data);
return templates.execute('content-cta', this, {data});
}
module.exports = function content(options = {}) {
let self = this;
let args = arguments;
const hash = options.hash || {};
const truncateOptions = {};
let runTruncate = false;
for (const key of ['words', 'characters']) {
if (Object.prototype.hasOwnProperty.call(hash, key)) {
runTruncate = true;
truncateOptions[key] = parseInt(hash[key], 10);
}
}
if (this.html === null) {
this.html = '';
}
if (!_.isUndefined(this.access) && !this.access) {
return restrictedCta.apply(self, args);
}
if (runTruncate) {
return new SafeString(
downsize(this.html, truncateOptions)
);
}
return new SafeString(this.html);
};