From 7dba7b52f89fc5565730fa46514a38f9689f8bc3 Mon Sep 17 00:00:00 2001 From: Hannah Wolfe Date: Tue, 4 Oct 2016 18:09:18 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=92=84=20Misc=20cleanup=20in=20middleware?= =?UTF-8?q?,=20helpers=20&=20apps=20(#7479)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit no issue - unsued code: - there are no public assets anymore, might need to use this instead of shared in future, but for now lets remove it to reduce confusion - the `input password` box was incorrectly registered as an admin helper, thinking that was needed in order to render the default template. This isn't needed. - apps: - small structure & comment update to amp app - moving input_password helper into private blogging app - refactor helpers in subscribers app --- core/server/apps/amp/index.js | 4 +- core/server/apps/amp/lib/helpers/index.js | 17 ++--- core/server/apps/private-blogging/index.js | 7 +- .../private-blogging/lib/helpers/index.js | 3 + .../lib}/helpers/input_password.js | 7 +- .../tests}/input_password_spec.js | 21 +++--- core/server/apps/subscribers/index.js | 71 ++----------------- .../apps/subscribers/lib/helpers/index.js | 32 +++++++++ .../subscribers/lib}/helpers/input_email.js | 9 +-- .../subscribers/lib/helpers/subscribe_form.js | 58 +++++++++++++++ core/server/helpers/index.js | 5 -- core/server/middleware/index.js | 4 -- 12 files changed, 128 insertions(+), 110 deletions(-) create mode 100644 core/server/apps/private-blogging/lib/helpers/index.js rename core/server/{ => apps/private-blogging/lib}/helpers/input_password.js (82%) rename core/{test/unit/server_helpers => server/apps/private-blogging/tests}/input_password_spec.js (70%) create mode 100644 core/server/apps/subscribers/lib/helpers/index.js rename core/server/{ => apps/subscribers/lib}/helpers/input_email.js (79%) create mode 100644 core/server/apps/subscribers/lib/helpers/subscribe_form.js diff --git a/core/server/apps/amp/index.js b/core/server/apps/amp/index.js index a25a081a2d..f5aedd6308 100644 --- a/core/server/apps/amp/index.js +++ b/core/server/apps/amp/index.js @@ -1,12 +1,12 @@ var router = require('./lib/router'), - registerAmpHelpers = require('./lib/helpers'), + registerHelpers = require('./lib/helpers'), // Dirty requires config = require('../../config'); module.exports = { activate: function activate(ghost) { - registerAmpHelpers(ghost); + registerHelpers(ghost); }, setupRoutes: function setupRoutes(blogRouter) { diff --git a/core/server/apps/amp/lib/helpers/index.js b/core/server/apps/amp/lib/helpers/index.js index 62002f8643..3e687b5231 100644 --- a/core/server/apps/amp/lib/helpers/index.js +++ b/core/server/apps/amp/lib/helpers/index.js @@ -1,16 +1,11 @@ -var ampContentHelper = require('./amp_content'), - ampComponentsHelper = require('./amp_components'), - registerAsyncThemeHelper = require('../../../../helpers').registerAsyncThemeHelper, - ghostHead = require('../../../../helpers/ghost_head'), - registerAmpHelpers; +// Dirty require! +var ghostHead = require('../../../../helpers/ghost_head'); -registerAmpHelpers = function (ghost) { - ghost.helpers.registerAsync('amp_content', ampContentHelper); +module.exports = function registerAmpHelpers(ghost) { + ghost.helpers.registerAsync('amp_content', require('./amp_content')); - ghost.helpers.register('amp_components', ampComponentsHelper); + ghost.helpers.register('amp_components', require('./amp_components')); // we use the {{ghost_head}} helper, but call it {{amp_ghost_head}}, so it's consistent - registerAsyncThemeHelper('amp_ghost_head', ghostHead); + ghost.helpers.registerAsync('amp_ghost_head', ghostHead); }; - -module.exports = registerAmpHelpers; diff --git a/core/server/apps/private-blogging/index.js b/core/server/apps/private-blogging/index.js index 6a9393b888..4279d32db2 100644 --- a/core/server/apps/private-blogging/index.js +++ b/core/server/apps/private-blogging/index.js @@ -3,10 +3,11 @@ var config = require('../../config'), logging = require('../../logging'), i18n = require('../../i18n'), middleware = require('./lib/middleware'), - router = require('./lib/router'); + router = require('./lib/router'), + registerHelpers = require('./lib/helpers'); module.exports = { - activate: function activate() { + activate: function activate(ghost) { var err, paths; if (utils.url.getSubdir()) { @@ -23,6 +24,8 @@ module.exports = { process.exit(0); } } + + registerHelpers(ghost); }, setupMiddleware: function setupMiddleware(blogApp) { diff --git a/core/server/apps/private-blogging/lib/helpers/index.js b/core/server/apps/private-blogging/lib/helpers/index.js new file mode 100644 index 0000000000..289c12f988 --- /dev/null +++ b/core/server/apps/private-blogging/lib/helpers/index.js @@ -0,0 +1,3 @@ +module.exports = function registerHelpers(ghost) { + ghost.helpers.register('input_password', require('./input_password')); +}; diff --git a/core/server/helpers/input_password.js b/core/server/apps/private-blogging/lib/helpers/input_password.js similarity index 82% rename from core/server/helpers/input_password.js rename to core/server/apps/private-blogging/lib/helpers/input_password.js index 13d89b704c..bc249cac97 100644 --- a/core/server/helpers/input_password.js +++ b/core/server/apps/private-blogging/lib/helpers/input_password.js @@ -3,11 +3,12 @@ // // Password input used on private.hbs for password-protected blogs // -// We use the name meta_title to match the helper for consistency: +// We use the name input_password to match the helper for consistency: // jscs:disable requireCamelCaseOrUpperCaseIdentifiers -var hbs = require('express-hbs'), - utils = require('./utils'), +// Dirty requires +var hbs = require('express-hbs'), + utils = require('../../../../helpers/utils'), input_password; input_password = function (options) { diff --git a/core/test/unit/server_helpers/input_password_spec.js b/core/server/apps/private-blogging/tests/input_password_spec.js similarity index 70% rename from core/test/unit/server_helpers/input_password_spec.js rename to core/server/apps/private-blogging/tests/input_password_spec.js index 89da31fabc..8bf675cf72 100644 --- a/core/test/unit/server_helpers/input_password_spec.js +++ b/core/server/apps/private-blogging/tests/input_password_spec.js @@ -1,23 +1,18 @@ +// We use the name input_password to match the helper for consistency: +// jscs:disable requireCamelCaseOrUpperCaseIdentifiers var should = require('should'), - hbs = require('express-hbs'), - utils = require('./utils'), // Stuff we are testing - handlebars = hbs.handlebars, - helpers = require('../../../server/helpers'); + input_password = require('../lib/helpers/input_password'); describe('{{input_password}} helper', function () { - before(function () { - utils.loadHelpers(); - }); - - it('has loaded input_password helper', function () { - should.exist(handlebars.helpers.input_password); + it('has input_password helper', function () { + should.exist(input_password); }); it('returns the correct input when no custom options are specified', function () { var markup = '', - rendered = helpers.input_password(); + rendered = input_password(); should.exist(rendered); String(rendered).should.equal(markup); @@ -30,7 +25,7 @@ describe('{{input_password}} helper', function () { class: 'test-class' } }, - rendered = helpers.input_password(options); + rendered = input_password(options); should.exist(rendered); @@ -44,7 +39,7 @@ describe('{{input_password}} helper', function () { placeholder: 'Test' } }, - rendered = helpers.input_password(options); + rendered = input_password(options); should.exist(rendered); diff --git a/core/server/apps/subscribers/index.js b/core/server/apps/subscribers/index.js index f7f26b1879..7d004bbcfc 100644 --- a/core/server/apps/subscribers/index.js +++ b/core/server/apps/subscribers/index.js @@ -1,74 +1,13 @@ -var _ = require('lodash'), - path = require('path'), - hbs = require('express-hbs'), - router = require('./lib/router'), +var router = require('./lib/router'), + registerHelpers = require('./lib/helpers'), // Dirty requires - config = require('../../config'), - logging = require('../../logging'), - i18n = require('../../i18n'), - labs = require('../../utils/labs'), - template = require('../../helpers/template'), - utils = require('../../helpers/utils'), - globalUtils = require('../../utils'), - - params = ['error', 'success', 'email'], - - /** - * This helper script sets the referrer and current location if not existent. - * - * document.querySelector['.location']['value'] = document.querySelector('.location')['value'] || window.location.href; - */ - subscribeScript = - ''; - -function makeHidden(name, extras) { - return utils.inputTemplate({ - type: 'hidden', - name: name, - className: name, - extras: extras - }); -} - -function subscribeFormHelper(options) { - var root = options.data.root, - data = _.merge({}, options.hash, _.pick(root, params), { - action: path.join('/', globalUtils.url.getSubdir(), config.get('routeKeywords').subscribe, '/'), - script: new hbs.handlebars.SafeString(subscribeScript), - hidden: new hbs.handlebars.SafeString( - makeHidden('confirm') + - makeHidden('location', root.subscribed_url ? 'value=' + root.subscribed_url : '') + - makeHidden('referrer', root.subscribed_referrer ? 'value=' + root.subscribed_referrer : '') - ) - }); - - return template.execute('subscribe_form', data, options); -} + config = require('../../config'), + labs = require('../../utils/labs'); module.exports = { activate: function activate(ghost) { - var err; - - // Correct way to register a helper from an app - ghost.helpers.register('subscribe_form', function labsEnabledHelper() { - if (labs.isSet('subscribers') === true) { - return subscribeFormHelper.apply(this, arguments); - } - - err = new Error(); - err.message = i18n.t('warnings.helpers.helperNotAvailable', {helperName: 'subscribe_form'}); - err.context = i18n.t('warnings.helpers.apiMustBeEnabled', {helperName: 'subscribe_form', flagName: 'subscribers'}); - err.help = i18n.t('warnings.helpers.seeLink', {url: 'http://support.ghost.org/subscribers-beta/'}); - logging.error(err); - - return new hbs.handlebars.SafeString(''); - }); + registerHelpers(ghost); }, setupRoutes: function setupRoutes(blogRouter) { diff --git a/core/server/apps/subscribers/lib/helpers/index.js b/core/server/apps/subscribers/lib/helpers/index.js new file mode 100644 index 0000000000..1f78fcbfad --- /dev/null +++ b/core/server/apps/subscribers/lib/helpers/index.js @@ -0,0 +1,32 @@ +// Dirty requires! +var hbs = require('express-hbs'), + logging = require('../../../../logging'), + i18n = require('../../../../i18n'), + labs = require('../../../../utils/labs'), + + errorMessages = [ + i18n.t('warnings.helpers.helperNotAvailable', {helperName: 'subscribe_form'}), + i18n.t('warnings.helpers.apiMustBeEnabled', {helperName: 'subscribe_form', flagName: 'subscribers'}), + i18n.t('warnings.helpers.seeLink', {url: 'http://support.ghost.org/subscribers-beta/'}) + ]; + +module.exports = function registerHelpers(ghost) { + var err; + + ghost.helpers.register('input_email', require('./input_email')); + + ghost.helpers.register('subscribe_form', function labsEnabledHelper() { + if (labs.isSet('subscribers') === true) { + return require('./subscribe_form').apply(this, arguments); + } + + err = new Error(); + err.message = i18n.t('warnings.helpers.helperNotAvailable', {helperName: 'subscribe_form'}); + err.context = i18n.t('warnings.helpers.apiMustBeEnabled', {helperName: 'subscribe_form', flagName: 'subscribers'}); + err.help = i18n.t('warnings.helpers.seeLink', {url: 'http://support.ghost.org/subscribers-beta/'}); + + logging.error(err); + + return new hbs.handlebars.SafeString(''); + }); +}; diff --git a/core/server/helpers/input_email.js b/core/server/apps/subscribers/lib/helpers/input_email.js similarity index 79% rename from core/server/helpers/input_email.js rename to core/server/apps/subscribers/lib/helpers/input_email.js index a6298a195e..24f93f81c0 100644 --- a/core/server/helpers/input_email.js +++ b/core/server/apps/subscribers/lib/helpers/input_email.js @@ -1,13 +1,14 @@ // # Input Email Helper // Usage: `{{input_email}}` // -// Password input used on private.hbs for password-protected blogs +// Used by `{{subscribe_form}}` // -// We use the name meta_title to match the helper for consistency: +// We use the name input_email to match the helper for consistency: // jscs:disable requireCamelCaseOrUpperCaseIdentifiers -var hbs = require('express-hbs'), - utils = require('./utils'), +// Dirty requires +var hbs = require('express-hbs'), + utils = require('../../../../helpers/utils'), input_email; input_email = function (options) { diff --git a/core/server/apps/subscribers/lib/helpers/subscribe_form.js b/core/server/apps/subscribers/lib/helpers/subscribe_form.js new file mode 100644 index 0000000000..af346a3899 --- /dev/null +++ b/core/server/apps/subscribers/lib/helpers/subscribe_form.js @@ -0,0 +1,58 @@ +// # Subscribe Form Helper +// Usage: `{{subscribe_form}}` +// +// We use the name subscribe_form to match the helper for consistency: +// jscs:disable requireCamelCaseOrUpperCaseIdentifiers +var _ = require('lodash'), + path = require('path'), + + // Dirty requires + hbs = require('express-hbs'), + config = require('../../../../config'), + template = require('../../../../helpers/template'), + utils = require('../../../../helpers/utils'), + globalUtils = require('../../../../utils'), + + params = ['error', 'success', 'email'], + + subscribe_form, + subscribeScript; + +function makeHidden(name, extras) { + return utils.inputTemplate({ + type: 'hidden', + name: name, + className: name, + extras: extras + }); +} + +/** + * This helper script sets the referrer and current location if not existent. + * + * document.querySelector['.location']['value'] = document.querySelector('.location')['value'] || window.location.href; + */ +subscribeScript = + ''; + +subscribe_form = function (options) { + var root = options.data.root, + data = _.merge({}, options.hash, _.pick(root, params), { + action: path.join('/', globalUtils.url.getSubdir(), config.get('routeKeywords').subscribe, '/'), + script: new hbs.handlebars.SafeString(subscribeScript), + hidden: new hbs.handlebars.SafeString( + makeHidden('confirm') + + makeHidden('location', root.subscribed_url ? 'value=' + root.subscribed_url : '') + + makeHidden('referrer', root.subscribed_referrer ? 'value=' + root.subscribed_referrer : '') + ) + }); + + return template.execute('subscribe_form', data, options); +}; + +module.exports = subscribe_form; diff --git a/core/server/helpers/index.js b/core/server/helpers/index.js index 75b601c6f6..c27e5933a8 100644 --- a/core/server/helpers/index.js +++ b/core/server/helpers/index.js @@ -40,8 +40,6 @@ coreHelpers.twitter_url = require('./twitter_url'); coreHelpers.url = require('./url'); // Specialist helpers for certain templates -coreHelpers.input_password = require('./input_password'); -coreHelpers.input_email = require('./input_email'); coreHelpers.page_url = require('./page_url'); coreHelpers.pageUrl = require('./page_url').deprecated; @@ -103,8 +101,6 @@ registerHelpers = function (adminHbs) { registerThemeHelper('has', coreHelpers.has); registerThemeHelper('is', coreHelpers.is); registerThemeHelper('image', coreHelpers.image); - registerThemeHelper('input_email', coreHelpers.input_email); - registerThemeHelper('input_password', coreHelpers.input_password); registerThemeHelper('meta_description', coreHelpers.meta_description); registerThemeHelper('meta_title', coreHelpers.meta_title); registerThemeHelper('navigation', coreHelpers.navigation); @@ -128,7 +124,6 @@ registerHelpers = function (adminHbs) { // Register admin helpers registerAdminHelper('asset', coreHelpers.asset); - registerAdminHelper('input_password', coreHelpers.input_password); }; module.exports = coreHelpers; diff --git a/core/server/middleware/index.js b/core/server/middleware/index.js index 2adc1bdbd9..de5fc21853 100644 --- a/core/server/middleware/index.js +++ b/core/server/middleware/index.js @@ -124,10 +124,6 @@ setupMiddleware = function setupMiddleware(blogApp) { {maxAge: utils.ONE_HOUR_MS, fallthrough: false} )); blogApp.use('/content/images', storage.getStorage().serve()); - blogApp.use('/public', serveStatic( - path.join(corePath, '/built/public'), - {maxAge: utils.ONE_YEAR_MS, fallthrough: false} - )); debug('Static content done'); // First determine whether we're serving admin or theme content