From fe7726d2499d78274a5fc1c4296533347693d056 Mon Sep 17 00:00:00 2001
From: Julian Lam <julian@designcreateplay.com>
Date: Thu, 20 Nov 2014 10:30:53 -0500
Subject: [PATCH] fixed #2431

---
 src/middleware/middleware.js | 43 ++++++++++++++++++------------------
 src/routes/index.js          |  2 +-
 src/views/admin/header.tpl   | 22 +++++++++---------
 3 files changed, 33 insertions(+), 34 deletions(-)

diff --git a/src/middleware/middleware.js b/src/middleware/middleware.js
index 7369eb0ddf..a9b55c31e6 100644
--- a/src/middleware/middleware.js
+++ b/src/middleware/middleware.js
@@ -198,23 +198,26 @@ middleware.checkAccountPermissions = function(req, res, next) {
 
 middleware.buildHeader = function(req, res, next) {
 	res.locals.renderHeader = true;
-	async.parallel({
-		config: function(next) {
-			controllers.api.getConfig(req, res, next);
-		},
-		footer: function(next) {
-			app.render('footer', {}, next);
-		}
-	}, function(err, results) {
-		if (err) {
-			return next(err);
-		}
+	
+	middleware.applyCSRF(req, res, function() {
+		async.parallel({
+			config: function(next) {
+				controllers.api.getConfig(req, res, next);
+			},
+			footer: function(next) {
+				app.render('footer', {}, next);
+			}
+		}, function(err, results) {
+			if (err) {
+				return next(err);
+			}
 
-		res.locals.config = results.config;
+			res.locals.config = results.config;
 
-		translator.translate(results.footer, results.config.defaultLang, function(parsedTemplate) {
-			res.locals.footer = parsedTemplate;
-			next();
+			translator.translate(results.footer, results.config.defaultLang, function(parsedTemplate) {
+				res.locals.footer = parsedTemplate;
+				next();
+			});
 		});
 	});
 };
@@ -468,12 +471,10 @@ middleware.maintenanceMode = function(req, res, next) {
 			res.status(503);
 
 			if (!isApiRoute.test(req.url)) {
-				middleware.applyCSRF(req, res, function() {
-					middleware.buildHeader(req, res, function() {
-						res.render('maintenance', {
-							site_title: meta.config.title || 'NodeBB',
-							message: meta.config.maintenanceModeMessage
-						});
+				middleware.buildHeader(req, res, function() {
+					res.render('maintenance', {
+						site_title: meta.config.title || 'NodeBB',
+						message: meta.config.maintenanceModeMessage
 					});
 				});
 			} else {
diff --git a/src/routes/index.js b/src/routes/index.js
index 6ca2a12e44..ba5062e89d 100644
--- a/src/routes/index.js
+++ b/src/routes/index.js
@@ -98,7 +98,7 @@ function groupRoutes(app, middleware, controllers) {
 function setupPageRoute(router, name, middleware, middlewares, controller) {
 	middlewares = middlewares.concat([middleware.incrementPageViews, middleware.updateLastOnlineTime]);
 
-	router.get(name, middleware.applyCSRF, middleware.buildHeader, middlewares, controller);
+	router.get(name, middleware.buildHeader, middlewares, controller);
 	router.get('/api' + name, middlewares, controller);
 }
 
diff --git a/src/views/admin/header.tpl b/src/views/admin/header.tpl
index 84b69f812e..c68e0fbfaa 100644
--- a/src/views/admin/header.tpl
+++ b/src/views/admin/header.tpl
@@ -22,19 +22,7 @@
 
 	<script type="text/javascript" src="{relative_path}/vendor/chart.js/chart.min.js?{cache-buster}"></script>
 	<script type="text/javascript" src="{relative_path}/vendor/hammer/hammer.min.js?{cache-buster}"></script>
-	<script type="text/javascript" src="{relative_path}/socket.io/socket.io.js?{cache-buster}"></script>
 	<script type="text/javascript" src="{relative_path}/nodebb.min.js?{cache-buster}"></script>
-	<script type="text/javascript" src="{relative_path}/vendor/colorpicker/colorpicker.js?{cache-buster}"></script>
-	<script type="text/javascript" src="{relative_path}/src/admin/admin.js?{cache-buster}"></script>
-	<script type="text/javascript" src="{relative_path}/vendor/ace/ace.js?{cache-buster}"></script>
-	<script type="text/javascript" src="{relative_path}/vendor/nanoscroller/nanoscroller.min.js?{cache-buster}"></script>
-	<script type="text/javascript" src="{relative_path}/vendor/jquery/event/jquery.event.drag.js?{cache-buster}"></script>
-	<script type="text/javascript" src="{relative_path}/vendor/jquery/event/jquery.event.drop.js?{cache-buster}"></script>
-	<script type="text/javascript" src="{relative_path}/vendor/semver/semver.browser.js?{cache-buster}"></script>
-	<script type="text/javascript" src="{relative_path}/vendor/jquery/serializeObject/jquery.ba-serializeobject.min.js?{cache-buster}"></script>
-	<script type="text/javascript" src="{relative_path}/vendor/jquery/deserialize/jquery.deserialize.min.js?{cache-buster}"></script>
-	<script type="text/javascript" src="{relative_path}/vendor/mousetrap/mousetrap.js?{cache-buster}"></script>
-
 	<script>
 		require.config({
 			baseUrl: "{relative_path}/src/modules",
@@ -49,6 +37,16 @@
 
 		app.inAdmin = true;
 	</script>
+	<script type="text/javascript" src="{relative_path}/vendor/colorpicker/colorpicker.js?{cache-buster}"></script>
+	<script type="text/javascript" src="{relative_path}/src/admin/admin.js?{cache-buster}"></script>
+	<script type="text/javascript" src="{relative_path}/vendor/ace/ace.js?{cache-buster}"></script>
+	<script type="text/javascript" src="{relative_path}/vendor/nanoscroller/nanoscroller.min.js?{cache-buster}"></script>
+	<script type="text/javascript" src="{relative_path}/vendor/jquery/event/jquery.event.drag.js?{cache-buster}"></script>
+	<script type="text/javascript" src="{relative_path}/vendor/jquery/event/jquery.event.drop.js?{cache-buster}"></script>
+	<script type="text/javascript" src="{relative_path}/vendor/semver/semver.browser.js?{cache-buster}"></script>
+	<script type="text/javascript" src="{relative_path}/vendor/jquery/serializeObject/jquery.ba-serializeobject.min.js?{cache-buster}"></script>
+	<script type="text/javascript" src="{relative_path}/vendor/jquery/deserialize/jquery.deserialize.min.js?{cache-buster}"></script>
+	<script type="text/javascript" src="{relative_path}/vendor/mousetrap/mousetrap.js?{cache-buster}"></script>
 
 	<!-- BEGIN scripts -->
 	<script type="text/javascript" src="{scripts.src}"></script>