From 426c122ed19b976b22300188f930eb7523224cff Mon Sep 17 00:00:00 2001 From: Hannah Wolfe Date: Mon, 4 Feb 2019 17:58:35 +0000 Subject: [PATCH] Updated messaging around {{get}} helper access closes #10447 - Get helper message talks about the old API, but upgrading is the best way to solve the problem - Had to create a way to add a custom message to a labs enabled helper to achieve this --- core/server/helpers/get.js | 5 ++++- core/server/services/labs.js | 17 ++++++++--------- core/server/translations/en.json | 6 +++++- core/test/unit/helpers/get_spec.js | 6 +++--- 4 files changed, 20 insertions(+), 14 deletions(-) diff --git a/core/server/helpers/get.js b/core/server/helpers/get.js index 1e8354bbdf..c3bb58ac00 100644 --- a/core/server/helpers/get.js +++ b/core/server/helpers/get.js @@ -197,7 +197,10 @@ module.exports = function getLabsWrapper() { flagKey: 'publicAPI', flagName: 'Public API', helperName: 'get', - helpUrl: 'https://docs.ghost.org/faq/api-versioning/', + // Even though this is a labs enabled helper, really we want users to upgrade to v2 API. + errMessagePath: 'warnings.helpers.get.apiRequired.message', + errContextPath: 'warnings.helpers.get.apiRequired.context', + helpUrl: 'https://docs.ghost.org/api/handlebars-themes/packagejson/', async: true }, function executeHelper() { return get.apply(self, args); diff --git a/core/server/services/labs.js b/core/server/services/labs.js index 7391f0d974..d205dce2bc 100644 --- a/core/server/services/labs.js +++ b/core/server/services/labs.js @@ -18,7 +18,8 @@ labs.isSet = function isSet(flag) { }; labs.enabledHelper = function enabledHelper(options, callback) { - var errDetails, errString; + const errDetails = {}; + let errString; if (labs.isSet(options.flagKey) === true) { // helper is active, use the callback @@ -26,14 +27,12 @@ labs.enabledHelper = function enabledHelper(options, callback) { } // Else, the helper is not active and we need to handle this as an error - errDetails = { - message: common.i18n.t('warnings.helpers.helperNotAvailable', {helperName: options.helperName}), - context: common.i18n.t('warnings.helpers.flagMustBeEnabled', { - helperName: options.helperName, - flagName: options.flagName - }), - help: common.i18n.t('warnings.helpers.seeLink', {url: options.helpUrl}) - }; + 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)); diff --git a/core/server/translations/en.json b/core/server/translations/en.json index 64a2da505c..1f2ff64654 100644 --- a/core/server/translations/en.json +++ b/core/server/translations/en.json @@ -565,7 +565,11 @@ "iteratorNeeded": "Need to pass an iterator to #foreach" }, "get": { - "invalidResource": "Invalid resource given to get helper" + "invalidResource": "Invalid resource given to get helper", + "apiRequired": { + "message": "The \\{\\{#get\\}\\} helper requires your theme to have API access.", + "context": "Please enable the v2 API via your theme's package.json file." + } }, "has": { "invalidAttribute": "Invalid or no attribute given to has helper" diff --git a/core/test/unit/helpers/get_spec.js b/core/test/unit/helpers/get_spec.js index 2e1b9638a1..b4a19f90fa 100644 --- a/core/test/unit/helpers/get_spec.js +++ b/core/test/unit/helpers/get_spec.js @@ -45,9 +45,9 @@ describe('{{#get}} helper', function () { result.should.be.a.Function(); result().should.be.an.Object().with.property( 'string', - '' + '' ); done();