mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-02-03 23:00:14 -05:00
df7e64fafa
refs #10790 - Moved /core/apps into core/frontend - Moved /core/server/helpers to /core/frontend/helpers along with /core/server/services/themes - Changed helper location in overrides - Moved /core/server/services/routing to /core/frontend/services - Moved /core/server/services/url to /core/frontend/services - Moved /core/server/data/meta to /core/frontend/meta - Moved /core/server/services/rss to /core/frontend/services - Moved /core/server/data/xml to /core/frontend/services
54 lines
1.9 KiB
JavaScript
54 lines
1.9 KiB
JavaScript
const settingsCache = require('./settings/cache');
|
|
const _ = require('lodash');
|
|
const Promise = require('bluebird');
|
|
const SafeString = require('../../frontend/services/themes/engine').SafeString;
|
|
const common = require('../lib/common');
|
|
const config = require('../config');
|
|
let labs = module.exports = {};
|
|
|
|
labs.isSet = function isSet(flag) {
|
|
var labsConfig = settingsCache.get('labs');
|
|
/**
|
|
* TODO: Uses hard-check for members prototype, removed here when added to settings
|
|
*/
|
|
if (flag === 'members') {
|
|
return config.get('enableDeveloperExperiments') && labsConfig && labsConfig[flag] && labsConfig[flag] === true;
|
|
}
|
|
return labsConfig && labsConfig[flag] && labsConfig[flag] === true;
|
|
};
|
|
|
|
labs.getAll = () => {
|
|
return settingsCache.get('labs');
|
|
};
|
|
|
|
labs.enabledHelper = function enabledHelper(options, callback) {
|
|
const errDetails = {};
|
|
let errString;
|
|
|
|
if (labs.isSet(options.flagKey) === true) {
|
|
// helper is active, use the callback
|
|
return callback();
|
|
}
|
|
|
|
// Else, the helper is not active and we need to handle this as an error
|
|
errDetails.message = common.i18n.t(options.errMessagePath || 'warnings.helpers.helperNotAvailable', {helperName: options.helperName}),
|
|
errDetails.context = common.i18n.t(options.errContextPath || 'warnings.helpers.flagMustBeEnabled', {
|
|
helperName: options.helperName,
|
|
flagName: options.flagName
|
|
});
|
|
errDetails.help = common.i18n.t(options.errHelpPath || 'warnings.helpers.seeLink', {url: options.helpUrl});
|
|
|
|
common.logging.error(new common.errors.DisabledFeatureError(errDetails));
|
|
|
|
errString = new SafeString(
|
|
'<script>console.error("' + _.values(errDetails).join(' ') + '");</script>'
|
|
);
|
|
|
|
if (options.async) {
|
|
return Promise.resolve(function asyncError() {
|
|
return errString;
|
|
});
|
|
}
|
|
|
|
return errString;
|
|
};
|