diff --git a/app.js b/app.js index 0aa624af0e..767c86bfb5 100644 --- a/app.js +++ b/app.js @@ -1,41 +1,34 @@ -var modules = { - user: require('./src/user.js'), - topics: require('./src/topics.js'), - posts: require('./src/posts.js'), - categories: require('./src/categories.js'), - templates: require('./src/templates.js'), - webserver: require('./src/webserver.js'), - websockets: require('./src/websockets.js'), - fs: require('fs') - } - - DEVELOPMENT = true; +var topics = require('./src/topics.js'), + posts = require('./src/posts.js'), + categories = require('./src/categories.js'), + templates = require('./src/templates.js'), + webserver = require('./src/webserver.js'), + websockets = require('./src/websockets.js'), + fs = require('fs'); +DEVELOPMENT = true; global.configuration = {}; -global.modules = modules; - (function(config) { config['ROOT_DIRECTORY'] = __dirname; - modules.templates.init(); - modules.websockets.init(); - + templates.init(); + websockets.init(); //setup scripts to be moved outside of the app in future. function setup_categories() { console.log('Checking categories...'); - modules.categories.get(function(data) { + categories.get(function(data) { if (data.categories.length === 0) { console.log('Setting up default categories...'); - modules.fs.readFile(config.ROOT_DIRECTORY + '/install/data/categories.json', function(err, categories) { + fs.readFile(config.ROOT_DIRECTORY + '/install/data/categories.json', function(err, categories) { categories = JSON.parse(categories); for (var category in categories) { - modules.categories.create(categories[category]); + categories.create(categories[category]); } }); diff --git a/src/routes/admin.js b/src/routes/admin.js index d222a2446a..aeabfc6d48 100644 --- a/src/routes/admin.js +++ b/src/routes/admin.js @@ -1,4 +1,7 @@ +var user = require('./../user.js'), + topics = require('./../topics.js'); + (function(Admin) { Admin.create_routes = function(app) { @@ -29,7 +32,7 @@ if (req.params.tab == 'search') { res.send(JSON.stringify({search_display: 'block', users: []})) } else { - global.modules.user.getUserList(function(data){ + user.getUserList(function(data){ res.send(JSON.stringify({search_display: 'none', users:data})); }); } @@ -39,13 +42,13 @@ if (req.params.tab == 'disabled') { res.send(JSON.stringify({categories: []})); } else { - global.modules.categories.get(function(data) { + categories.get(function(data) { res.send(JSON.stringify(data)); }); } break; case 'topics' : - global.modules.topics.get(function(data) { + topics.get(function(data) { res.send(JSON.stringify(data)); }); break; diff --git a/src/templates.js b/src/templates.js index 4fc25a72b1..b9b97571c9 100644 --- a/src/templates.js +++ b/src/templates.js @@ -1,3 +1,6 @@ +var fs = require('fs'); + + // to be deprecated in favour of client-side only templates. (function(Templates) { @@ -7,7 +10,7 @@ function loadTemplates(templatesToLoad) { for (var t in templatesToLoad) { (function(file) { - modules.fs.readFile(global.configuration.ROOT_DIRECTORY + '/public/templates/' + file + '.tpl', function(err, html) { + fs.readFile(global.configuration.ROOT_DIRECTORY + '/public/templates/' + file + '.tpl', function(err, html) { var template = function() { this.toString = function() { return this.html; diff --git a/src/user.js b/src/user.js index 32e18715a7..5a2cc51cb7 100644 --- a/src/user.js +++ b/src/user.js @@ -1,4 +1,6 @@ -var config = require('../config.js'), + + +var config = require('../config.js'), utils = require('./utils.js'), RDB = require('./redis.js'), crypto = require('crypto'), diff --git a/src/webserver.js b/src/webserver.js index c288a828ec..5586c8526e 100644 --- a/src/webserver.js +++ b/src/webserver.js @@ -8,6 +8,9 @@ var express = require('express'), redisServer = redis.createClient(config.redis.port, config.redis.host, config.redis.options), user = require('./user.js'), + categories = require('./categories.js'), + posts = require('./posts.js'), + topics = require('./topics.js'), utils = require('./utils.js'), fs = require('fs'), admin = require('./routes/admin.js'), @@ -40,11 +43,11 @@ var express = require('express'), if (/^\/api\//.test(req.url)) return next(); if (req.user && req.user.uid) { - global.modules.user.session_ping(req.sessionID, req.user.uid); + user.session_ping(req.sessionID, req.user.uid); } // (Re-)register the session as active - global.modules.user.active.register(req.sessionID); + user.active.register(req.sessionID); next(); }); @@ -98,7 +101,7 @@ var express = require('express'), function api_method(req, res) { switch(req.params.method) { case 'home' : - global.modules.categories.get(function(data) { + categories.get(function(data) { res.send(JSON.stringify(data)); }); break; @@ -147,27 +150,27 @@ var express = require('express'), res.send(JSON.stringify(data)); break; case 'topic' : - global.modules.posts.get(function(data) { + posts.get(function(data) { res.send(JSON.stringify(data)); }, req.params.id, (req.user) ? req.user.uid : 0); break; case 'category' : - global.modules.topics.get(function(data) { + topics.get(function(data) { res.send(JSON.stringify(data)); }, req.params.id, (req.user) ? req.user.uid : 0); break; case 'latest' : - global.modules.topics.get(function(data) { + topics.get(function(data) { res.send(JSON.stringify(data)); }); break; case 'popular' : - global.modules.topics.get(function(data) { + topics.get(function(data) { res.send(JSON.stringify(data)); }); break; case 'active' : - global.modules.topics.get(function(data) { + topics.get(function(data) { res.send(JSON.stringify(data)); }); break; @@ -189,7 +192,7 @@ var express = require('express'), break; case 'confirm': - global.modules.user.email.confirm(req.params.id, function(data) { + user.email.confirm(req.params.id, function(data) { if (data.status === 'ok') { res.send(JSON.stringify({ 'alert-class': 'alert-success', @@ -436,7 +439,7 @@ var express = require('express'), } app.get('/test', function(req, res) { - global.modules.posts.getRawContent(11, function(post) { + posts.getRawContent(11, function(post) { res.send(JSON.stringify(post)); }); }); diff --git a/src/websockets.js b/src/websockets.js index e2fdfa0a62..cd15e5f81f 100644 --- a/src/websockets.js +++ b/src/websockets.js @@ -1,16 +1,20 @@ var SocketIO = require('socket.io').listen(global.server,{log:false}), cookie = require('cookie'), connect = require('connect'), - config = require('../config.js'); - + config = require('../config.js'), + user = require('./user.js'), + posts = require('./posts.js'), + topics = require('./topics.js'), + categories = require('./categories.js'), + templates = require('./templates.js'); + (function(io) { - var modules = null, - users = {}, + var users = {}, rooms = {} global.io = io; module.exports.init = function() { - modules = global.modules; + } // Adapted from http://howtonode.org/socket-io-auth @@ -30,7 +34,7 @@ var SocketIO = require('socket.io').listen(global.server,{log:false}), // Otherwise, continue unimpeded. var sessionID = handshakeData.sessionID; - global.modules.user.get_uid_by_session(sessionID, function(userId) { + user.get_uid_by_session(sessionID, function(userId) { if (userId) { users[sessionID] = userId; @@ -50,7 +54,7 @@ var SocketIO = require('socket.io').listen(global.server,{log:false}), if (DEVELOPMENT === true) { // refreshing templates - modules.templates.init(); + templates.init(); } /*process.on('uncaughtException', function(err) { @@ -93,7 +97,7 @@ var SocketIO = require('socket.io').listen(global.server,{log:false}), } - modules.user.get_usernames_by_uids(uids, function(usernames) { + user.get_usernames_by_uids(uids, function(usernames) { io.sockets.in(data.enter).emit('api:get_users_in_room', { usernames: usernames, uids: uids, @@ -111,7 +115,7 @@ var SocketIO = require('socket.io').listen(global.server,{log:false}), socket.on('api:updateHeader', function(data) { if(uid) { - modules.user.getUserFields(uid, data.fields, function(fields) { + user.getUserFields(uid, data.fields, function(fields) { fields.uid = uid; socket.emit('api:updateHeader', fields); }); @@ -128,107 +132,107 @@ var SocketIO = require('socket.io').listen(global.server,{log:false}), }); socket.on('user.exists', function(data) { - modules.user.exists(data.username, function(exists){ + user.exists(data.username, function(exists){ socket.emit('user.exists', {exists: exists}); }); }); socket.on('user.count', function(data) { - modules.user.count(socket, data); + user.count(socket, data); }); socket.on('user.latest', function(data) { - modules.user.latest(socket, data); + user.latest(socket, data); }); socket.on('user.email.exists', function(data) { - modules.user.email.exists(socket, data.email); + user.email.exists(socket, data.email); }); socket.on('user:reset.send', function(data) { - modules.user.reset.send(socket, data.email); + user.reset.send(socket, data.email); }); socket.on('user:reset.valid', function(data) { - modules.user.reset.validate(socket, data.code); + user.reset.validate(socket, data.code); }); socket.on('user:reset.commit', function(data) { - modules.user.reset.commit(socket, data.code, data.password); + user.reset.commit(socket, data.code, data.password); }); socket.on('api:topics.post', function(data) { - modules.topics.post(socket, uid, data.title, data.content, data.category_id); + topics.post(socket, uid, data.title, data.content, data.category_id); }); socket.on('api:posts.reply', function(data) { - modules.posts.reply(socket, data.topic_id, uid, data.content); + posts.reply(socket, data.topic_id, uid, data.content); }); socket.on('api:user.active.get', function() { - modules.user.active.get(); + user.active.get(); }); socket.on('api:posts.favourite', function(data) { - modules.posts.favourite(io, data.pid, data.room_id, uid); + posts.favourite(io, data.pid, data.room_id, uid); }); socket.on('api:posts.unfavourite', function(data) { - modules.posts.unfavourite(io, data.pid, data.room_id, uid); + posts.unfavourite(io, data.pid, data.room_id, uid); }); socket.on('api:user.active.get_record', function() { - modules.user.active.get_record(socket); + user.active.get_record(socket); }); socket.on('api:topic.delete', function(data) { - modules.topics.delete(data.tid, uid, socket); + topics.delete(data.tid, uid, socket); }); socket.on('api:topic.restore', function(data) { - modules.topics.restore(data.tid, uid, socket); + topics.restore(data.tid, uid, socket); }); socket.on('api:topic.lock', function(data) { - modules.topics.lock(data.tid, uid, socket); + topics.lock(data.tid, uid, socket); }); socket.on('api:topic.unlock', function(data) { - modules.topics.unlock(data.tid, uid, socket); + topics.unlock(data.tid, uid, socket); }); socket.on('api:topic.pin', function(data) { - modules.topics.pin(data.tid, uid, socket); + topics.pin(data.tid, uid, socket); }); socket.on('api:topic.unpin', function(data) { - modules.topics.unpin(data.tid, uid, socket); + topics.unpin(data.tid, uid, socket); }); socket.on('api:categories.get', function() { - modules.categories.get(function(categories) { + categories.get(function(categories) { socket.emit('api:categories.get', categories); }); }); socket.on('api:topic.move', function(data) { - modules.topics.move(data.tid, data.cid, socket); + topics.move(data.tid, data.cid, socket); }); socket.on('api:posts.getRawPost', function(data) { - modules.posts.getRawContent(data.pid, socket); + posts.getRawContent(data.pid, socket); }); socket.on('api:posts.edit', function(data) { - modules.posts.edit(uid, data.pid, data.content); + posts.edit(uid, data.pid, data.content); }); socket.on('api:posts.delete', function(data) { - modules.posts.delete(uid, data.pid); + posts.delete(uid, data.pid); }); socket.on('api:posts.restore', function(data) { - modules.posts.restore(uid, data.pid); + posts.restore(uid, data.pid); }); });