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