mirror of
https://github.com/sudoxnym/habitica-self-host.git
synced 2026-08-02 04:00:36 +00:00
middleware.locals back to a middleware, use user specified language if avalaible, list of avalaible languages avalaible in window.env
This commit is contained in:
parent
6e33b88c85
commit
154a652726
3 changed files with 45 additions and 25 deletions
|
|
@ -2,6 +2,7 @@ var nconf = require('nconf');
|
|||
var _ = require('lodash');
|
||||
var fs = require('fs');
|
||||
var path = require('path');
|
||||
var User = require('./models/user').model
|
||||
|
||||
module.exports.forceSSL = function(req, res, next){
|
||||
var baseUrl = nconf.get("BASE_URL");
|
||||
|
|
@ -96,23 +97,41 @@ var getTranslatedString = function(locale, string){
|
|||
return 'String not found!';
|
||||
}
|
||||
|
||||
var getUserLanguage = function(langs){
|
||||
return _(langs).map(function(lang){
|
||||
return lang.slice(0, 2);
|
||||
}).uniq().value()[0];
|
||||
var getUserLanguage = function(req, callback){
|
||||
var getFromBrowser = function(){
|
||||
return _(req.acceptedLanguages).map(function(lang){
|
||||
return lang.slice(0, 2);
|
||||
}).uniq().value()[0];
|
||||
};
|
||||
|
||||
if(req.session && req.session.userId){
|
||||
User.findOne({_id: req.session.userId}, function(err, user){
|
||||
if(err) return callback(err);
|
||||
return callback(null, user.preferences.language || getFromBrowser());
|
||||
});
|
||||
}else{
|
||||
return callback(null, getFromBrowser());
|
||||
}
|
||||
}
|
||||
|
||||
module.exports.locals = function(req) {
|
||||
return {
|
||||
NODE_ENV: nconf.get('NODE_ENV'),
|
||||
BASE_URL: nconf.get('BASE_URL'),
|
||||
PAYPAL_MERCHANT: nconf.get('PAYPAL_MERCHANT'),
|
||||
IS_MOBILE: /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(req.header('User-Agent')),
|
||||
STRIPE_PUB_KEY: nconf.get('STRIPE_PUB_KEY'),
|
||||
getManifestFiles: getManifestFiles,
|
||||
getBuildUrl: getBuildUrl,
|
||||
t: function(string){
|
||||
return getTranslatedString(getUserLanguage(req.acceptedLanguages), string);
|
||||
module.exports.locals = function(req, res, next) {
|
||||
getUserLanguage(req, function(err, language){
|
||||
if(err) return res.json(500, {err: err});
|
||||
|
||||
res.locals.habitrpg = {
|
||||
NODE_ENV: nconf.get('NODE_ENV'),
|
||||
BASE_URL: nconf.get('BASE_URL'),
|
||||
PAYPAL_MERCHANT: nconf.get('PAYPAL_MERCHANT'),
|
||||
IS_MOBILE: /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(req.header('User-Agent')),
|
||||
STRIPE_PUB_KEY: nconf.get('STRIPE_PUB_KEY'),
|
||||
getManifestFiles: getManifestFiles,
|
||||
getBuildUrl: getBuildUrl,
|
||||
avalaibleLanguages: Object.keys(translations),
|
||||
t: function(string){
|
||||
return getTranslatedString(language, string);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
next();
|
||||
});
|
||||
}
|
||||
|
|
@ -172,7 +172,8 @@ var UserSchema = new Schema({
|
|||
hideHeader: {type:Boolean, 'default':false},
|
||||
showHelm: {type:Boolean, 'default':true},
|
||||
skin: {type:String, 'default':'white'},
|
||||
timezoneOffset: Number
|
||||
timezoneOffset: Number,
|
||||
language: String
|
||||
},
|
||||
profile: {
|
||||
blurb: String,
|
||||
|
|
|
|||
|
|
@ -5,30 +5,30 @@ var _ = require('lodash');
|
|||
var middleware = require('../middleware')
|
||||
|
||||
// -------- App --------
|
||||
router.get('/', function(req, res) {
|
||||
router.get('/', middleware.locals, function(req, res) {
|
||||
if (!req.headers['x-api-user'] && !req.headers['x-api-key'] && !(req.session && req.session.userId))
|
||||
return res.redirect('/static/front')
|
||||
|
||||
return res.render('index', {
|
||||
title: 'HabitRPG | Your Life, The Role Playing Game',
|
||||
env: middleware.locals(req)
|
||||
env: res.locals.habitrpg
|
||||
});
|
||||
});
|
||||
|
||||
// -------- Marketing --------
|
||||
|
||||
router.get('/static/front', function(req, res) {
|
||||
var env = middleware.locals(req);
|
||||
router.get('/static/front', middleware.locals, function(req, res) {
|
||||
var env = res.locals.habitrpg;
|
||||
env.isFrontPage = true;
|
||||
res.render('static/front', {env: env});
|
||||
});
|
||||
|
||||
router.get('/static/privacy', function(req, res) {
|
||||
res.render('static/privacy', {env: middleware.locals(req)});
|
||||
router.get('/static/privacy', middleware.locals, function(req, res) {
|
||||
res.render('static/privacy', {env: res.locals.habitrpg});
|
||||
});
|
||||
|
||||
router.get('/static/terms', function(req, res) {
|
||||
res.render('static/terms', {env: middleware.locals(req)});
|
||||
router.get('/static/terms', middleware.locals, function(req, res) {
|
||||
res.render('static/terms', {env: res.locals.habitrpg});
|
||||
});
|
||||
|
||||
// --------- Redirects --------
|
||||
|
|
|
|||
Loading…
Reference in a new issue