From 04084807c2a594228e955f8b24f888ae0d5772a1 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Fri, 19 Dec 2014 17:19:29 -0500 Subject: [PATCH] removed app.loadConfig --- public/src/app.js | 192 ++++++++++++-------------- public/src/client/account/settings.js | 14 +- src/middleware/middleware.js | 6 + src/user/settings.js | 43 +++--- 4 files changed, 129 insertions(+), 126 deletions(-) diff --git a/public/src/app.js b/public/src/app.js index ab8da090df..64ebe9b84c 100644 --- a/public/src/app.js +++ b/public/src/app.js @@ -1,8 +1,7 @@ "use strict"; -/*global io, templates, translator, ajaxify, utils, bootbox, RELATIVE_PATH*/ +/*global io, templates, translator, ajaxify, utils, bootbox, RELATIVE_PATH, config*/ -var socket, - config, +var socket, app = { 'username': null, 'uid': null, @@ -17,6 +16,74 @@ var socket, var showWelcomeMessage = false; var reconnecting = false; + function socketIOConnect() { + var ioParams = { + reconnectionAttempts: config.maxReconnectionAttempts, + reconnectionDelay : config.reconnectionDelay, + transports: config.socketioTransports, + path: config.relative_path + '/socket.io' + }; + + socket = io.connect(config.websocketAddress, ioParams); + reconnecting = false; + + socket.on('event:connect', function (data) { + // TODO : deprecate in 0.7.0, use app.user + app.username = data.username; + app.userslug = data.userslug; + app.picture = data.picture; + app.uid = data.uid; + app.isAdmin = data.isAdmin; + + app.user = data; + + app.showLoginMessage(); + app.replaceSelfLinks(); + $(window).trigger('action:connected'); + app.isConnected = true; + }); + + socket.on('connect', onSocketConnect); + + socket.on('event:disconnect', function() { + $(window).trigger('action:disconnected'); + app.isConnected = false; + socket.socket.connect(); + }); + + socket.on('reconnecting', function (data, attempt) { + if(attempt === parseInt(config.maxReconnectionAttempts, 10)) { + socket.socket.reconnectionAttempts = 0; + socket.socket.reconnectionDelay = config.reconnectionDelay; + return; + } + + reconnecting = true; + var reconnectEl = $('#reconnect'); + + if (!reconnectEl.hasClass('active')) { + reconnectEl.html(''); + } + + reconnectEl.addClass('active').removeClass("hide").tooltip({ + placement: 'bottom' + }); + }); + + socket.on('event:banned', function() { + app.alert({ + title: '[[global:alert.banned]]', + message: '[[global:alert.banned.message]]', + type: 'danger', + timeout: 1000 + }); + + setTimeout(function() { + window.location.href = config.relative_path + '/'; + }, 1000); + }); + } + function onSocketConnect(data) { if (reconnecting) { var reconnectEl = $('#reconnect'); @@ -64,109 +131,6 @@ var socket, } } - function onConfigLoad(data) { - config = data; - - exposeConfigToTemplates(); - - if(socket) { - socket.disconnect(); - setTimeout(function() { - socket.connect(); - }, 200); - } else { - var ioParams = { - reconnectionAttempts: config.maxReconnectionAttempts, - reconnectionDelay : config.reconnectionDelay, - transports: config.socketioTransports, - path: RELATIVE_PATH + '/socket.io' - }; - - socket = io.connect(config.websocketAddress, ioParams); - reconnecting = false; - - socket.on('event:connect', function (data) { - // TODO : deprecate in 0.7.0, use app.user - app.username = data.username; - app.userslug = data.userslug; - app.picture = data.picture; - app.uid = data.uid; - app.isAdmin = data.isAdmin; - - app.user = data; - - templates.setGlobal('loggedIn', parseInt(data.uid, 10) !== 0); - - app.showLoginMessage(); - app.replaceSelfLinks(); - $(window).trigger('action:connected'); - app.isConnected = true; - }); - - socket.on('event:alert', function (data) { - app.alert(data); - }); - - socket.on('connect', onSocketConnect); - - socket.on('event:disconnect', function() { - $(window).trigger('action:disconnected'); - app.isConnected = false; - socket.socket.connect(); - }); - - socket.on('reconnecting', function (data, attempt) { - if(attempt === parseInt(config.maxReconnectionAttempts, 10)) { - socket.socket.reconnectionAttempts = 0; - socket.socket.reconnectionDelay = config.reconnectionDelay; - return; - } - - reconnecting = true; - var reconnectEl = $('#reconnect'); - - if (!reconnectEl.hasClass('active')) { - reconnectEl.html(''); - } - - reconnectEl.addClass('active').removeClass("hide").tooltip({ - placement: 'bottom' - }); - }); - - socket.on('event:banned', function() { - app.alert({ - title: '[[global:alert.banned]]', - message: '[[global:alert.banned.message]]', - type: 'danger', - timeout: 1000 - }); - - setTimeout(function() { - window.location.href = RELATIVE_PATH + '/'; - }, 1000); - }); - - app.cacheBuster = config['cache-buster']; - - require(['csrf'], function(csrf) { - csrf.set(data.csrf_token); - }); - - bootbox.setDefaults({ - locale: config.userLang - }); - } - } - - app.loadConfig = function() { - $.ajax({ - url: RELATIVE_PATH + '/api/config', - success: onConfigLoad, - async: false - }); - }; - app.logout = function() { require(['csrf'], function(csrf) { $.ajax(RELATIVE_PATH + '/logout', { @@ -402,6 +366,7 @@ var socket, function exposeConfigToTemplates() { $(document).ready(function() { + templates.setGlobal('loggedIn', config.loggedIn); templates.setGlobal('relative_path', RELATIVE_PATH); for(var key in config) { if (config.hasOwnProperty(key)) { @@ -609,7 +574,20 @@ var socket, showWelcomeMessage = window.location.href.indexOf('loggedin') !== -1; - app.loadConfig(); + exposeConfigToTemplates(); + + socketIOConnect(); + + app.cacheBuster = config['cache-buster']; + + require(['csrf'], function(csrf) { + csrf.set(config.csrf_token); + }); + + bootbox.setDefaults({ + locale: config.userLang + }); + app.alternatingTitle(''); }()); diff --git a/public/src/client/account/settings.js b/public/src/client/account/settings.js index 107e766c77..3dde90dd98 100644 --- a/public/src/client/account/settings.js +++ b/public/src/client/account/settings.js @@ -1,3 +1,7 @@ +'use strict'; + +/*global define, socket, app, ajaxify, config*/ + define('forum/account/settings', ['forum/account/header'], function(header) { var AccountSettings = {}; @@ -26,13 +30,19 @@ define('forum/account/settings', ['forum/account/header'], function(header) { } }); - socket.emit('user.saveSettings', {uid: ajaxify.variables.get('theirid'), settings: settings}, function(err) { + socket.emit('user.saveSettings', {uid: ajaxify.variables.get('theirid'), settings: settings}, function(err, newSettings) { if (err) { return app.alertError(err.message); } app.alertSuccess('[[success:settings-saved]]'); - app.loadConfig(); + + for (var key in newSettings) { + if (newSettings.hasOwnProperty(key)) { + config[key] = newSettings[key]; + } + } + if (parseInt(app.uid, 10) === parseInt(ajaxify.variables.get('theirid'), 10)) { ajaxify.refresh(); } diff --git a/src/middleware/middleware.js b/src/middleware/middleware.js index c09a24fc4b..25691d0e42 100644 --- a/src/middleware/middleware.js +++ b/src/middleware/middleware.js @@ -216,6 +216,10 @@ middleware.renderHeader = function(req, res, callback) { }; plugins.fireHook('filter:header.build', custom_header, function(err, custom_header) { + if (err) { + return next(err); + } + var defaultMetaTags = [{ name: 'viewport', content: 'width=device-width, initial-scale=1.0, user-scalable=no' @@ -260,6 +264,8 @@ middleware.renderHeader = function(req, res, callback) { } } + templateValues.config = JSON.stringify(res.locals.config); + templateValues.metaTags = defaultMetaTags.concat(res.locals.metaTags || []).map(function(tag) { if(!tag || typeof tag.content !== 'string') { winston.warn('Invalid meta tag. ', tag); diff --git a/src/user/settings.js b/src/user/settings.js index 0e857833db..3bda78c315 100644 --- a/src/user/settings.js +++ b/src/user/settings.js @@ -1,7 +1,8 @@ 'use strict'; -var meta = require('../meta'), +var async = require('async'), + meta = require('../meta'), db = require('../database'), plugins = require('../plugins'); @@ -82,22 +83,30 @@ module.exports = function(User) { data.language = data.language || meta.config.defaultLang; plugins.fireHook('action:user.saveSettings', {uid: uid, settings: data}); - db.setObject('user:' + uid + ':settings', { - showemail: data.showemail, - showfullname: data.showfullname, - openOutgoingLinksInNewTab: data.openOutgoingLinksInNewTab, - dailyDigestFreq: data.dailyDigestFreq || 'off', - usePagination: data.usePagination, - topicsPerPage: Math.min(data.topicsPerPage, 20), - postsPerPage: Math.min(data.postsPerPage, 20), - notificationSounds: data.notificationSounds, - language: data.language || meta.config.defaultLang, - followTopicsOnCreate: data.followTopicsOnCreate, - followTopicsOnReply: data.followTopicsOnReply, - sendChatNotifications: data.sendChatNotifications, - restrictChat: data.restrictChat, - topicSearchEnabled: data.topicSearchEnabled - }, callback); + + async.waterfall([ + function(next) { + db.setObject('user:' + uid + ':settings', { + showemail: data.showemail, + showfullname: data.showfullname, + openOutgoingLinksInNewTab: data.openOutgoingLinksInNewTab, + dailyDigestFreq: data.dailyDigestFreq || 'off', + usePagination: data.usePagination, + topicsPerPage: Math.min(data.topicsPerPage, 20), + postsPerPage: Math.min(data.postsPerPage, 20), + notificationSounds: data.notificationSounds, + language: data.language || meta.config.defaultLang, + followTopicsOnCreate: data.followTopicsOnCreate, + followTopicsOnReply: data.followTopicsOnReply, + sendChatNotifications: data.sendChatNotifications, + restrictChat: data.restrictChat, + topicSearchEnabled: data.topicSearchEnabled + }, next); + }, + function(next) { + User.getSettings(uid, next); + } + ], callback); }; User.setSetting = function(uid, key, value, callback) {