From 1d9148eebb89c5532af3e7de9fc00e06517010a7 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Tue, 12 Nov 2013 14:49:01 +0100 Subject: [PATCH] move middleware.locals only where it is needed and transform it into a common function, simplify translations and adds automatic language detection --- src/middleware.js | 27 +++++++++++++-------------- src/routes/pages.js | 32 ++++++++++++++++++-------------- src/server.js | 1 - views/shared/footer.jade | 2 +- views/shared/tasks/lists.jade | 2 +- 5 files changed, 33 insertions(+), 31 deletions(-) diff --git a/src/middleware.js b/src/middleware.js index e46c14ab34..be96a6ffd8 100644 --- a/src/middleware.js +++ b/src/middleware.js @@ -102,9 +102,14 @@ var getTranslatedString = function(locale, string){ return 'String not found!'; } -module.exports.locals = function(req, res, next) { - res.locals.habitrpg = res.locals.habitrpg || {} - _.defaults(res.locals.habitrpg, { +var getUserLanguage = function(langs){ + return _(langs).map(function(lang){ + return lang.slice(0, 2); + }).uniq().value()[0]; +} + +module.exports.locals = function(req) { + return { NODE_ENV: nconf.get('NODE_ENV'), BASE_URL: nconf.get('BASE_URL'), PAYPAL_MERCHANT: nconf.get('PAYPAL_MERCHANT'), @@ -112,14 +117,8 @@ module.exports.locals = function(req, res, next) { STRIPE_PUB_KEY: nconf.get('STRIPE_PUB_KEY'), getManifestFiles: getManifestFiles, getBuildUrl: getBuildUrl, - getTranslatedString: getTranslatedString - }); - next() -} -/* - // translate = (req, res, next) -> - // model = req.getModel() - // # Set locale to bg on dev - // #model.set '_i18n.locale', 'bg' if process.env.NODE_ENV is "development" - // next() - */ + t: function(string){ + return getTranslatedString(getUserLanguage(req.acceptedLanguages), string); + } + } +} \ No newline at end of file diff --git a/src/routes/pages.js b/src/routes/pages.js index 6b9ab1d765..878527a521 100644 --- a/src/routes/pages.js +++ b/src/routes/pages.js @@ -2,23 +2,36 @@ var nconf = require('nconf'); var express = require('express'); var router = new express.Router(); var _ = require('lodash'); +var middleware = require('../middleware') // -------- App -------- router.get('/', function(req, res) { return res.render('index', { title: 'HabitRPG | Your Life, The Role Playing Game', - env: res.locals.habitrpg + env: middleware.locals(req) }); }); // -------- Marketing -------- -router.get('/splash.html', function(req, res) { - res.redirect('/static/front'); +router.get('/static/front', function(req, res) { + var env = middleware.locals(req); + env.isFrontPage = true; + res.render('static/front', {env: env}); }); -router.get('/static/front', function(req, res) { - res.render('static/front', {env: res.locals.habitrpg, isFrontPage: true}); +router.get('/static/privacy', function(req, res) { + res.render('static/privacy', {env: middleware.locals(req)}); +}); + +router.get('/static/terms', function(req, res) { + res.render('static/terms', {env: middleware.locals(req)}); +}); + +// --------- Redirects -------- + +router.get('/splash.html', function(req, res) { + res.redirect('/static/front'); }); router.get('/static/about', function(req, res) { @@ -37,13 +50,4 @@ router.get('/static/faq', function(req, res) { res.redirect('http://community.habitrpg.com/faq-page'); }); -router.get('/static/privacy', function(req, res) { - res.render('static/privacy', {env: res.locals.habitrpg}); -}); - -router.get('/static/terms', function(req, res) { - res.render('static/terms', {env: res.locals.habitrpg}); -}); - - module.exports = router; \ No newline at end of file diff --git a/src/server.js b/src/server.js index 6c4a8f8feb..46ad2ef959 100644 --- a/src/server.js +++ b/src/server.js @@ -94,7 +94,6 @@ app.use(express.cookieParser()); app.use(express.cookieSession({ secret: nconf.get('SESSION_SECRET'), httpOnly: false, cookie: { maxAge: TWO_WEEKS }})); //app.use(express.session()); app.use(middleware.splash); -app.use(middleware.locals); // Initialize Passport! Also use passport.session() middleware, to support // persistent login sessions (recommended). diff --git a/views/shared/footer.jade b/views/shared/footer.jade index 3c770ad6d7..e168c2da29 100644 --- a/views/shared/footer.jade +++ b/views/shared/footer.jade @@ -11,7 +11,7 @@ footer.footer(ng-controller='FooterCtrl') .span3 h4 Company ul.unstyled - if (!isFrontPage) + if (!env.isFrontPage) li .btn.btn-small.btn-success(ng-click='modals.buyGems = true') i.icon-heart.icon-white diff --git a/views/shared/tasks/lists.jade b/views/shared/tasks/lists.jade index 26c04ec3ac..df20e2d6ee 100644 --- a/views/shared/tasks/lists.jade +++ b/views/shared/tasks/lists.jade @@ -67,7 +67,7 @@ script(id='templates/habitrpg-tasks.html', type="text/ng-template") // Ads div(ng-if='main && !user.purchased.ads && list.type!="reward"') span.pull-right - a(ng-click='modals.buyGems=true', tooltip=env.getTranslatedString('it', 'removeAds')) + a(ng-click='modals.buyGems=true', tooltip=env.t('removeAds')) i.icon-remove // Habit3 ins.adsbygoogle(ng-init='initAds()', style='display: inline-block; width: 234px; height: 60px;', data-ad-client='ca-pub-3242350243827794', data-ad-slot='9529624576')