From f47f1463205500c86e626894b148e9b8d18418eb Mon Sep 17 00:00:00 2001 From: psychobunny <psycho.bunny@hotmail.com> Date: Wed, 12 Mar 2014 17:59:29 -0400 Subject: [PATCH] moved out uploads and users from controllers/admin into their own files --- src/controllers/admin.js | 150 +------------------------------ src/controllers/admin/uploads.js | 93 +++++++++++++++++++ src/controllers/admin/users.js | 67 ++++++++++++++ 3 files changed, 163 insertions(+), 147 deletions(-) create mode 100644 src/controllers/admin/uploads.js create mode 100644 src/controllers/admin/users.js diff --git a/src/controllers/admin.js b/src/controllers/admin.js index f516964c64..cab573d83e 100644 --- a/src/controllers/admin.js +++ b/src/controllers/admin.js @@ -1,8 +1,6 @@ "use strict"; var async = require('async'), - fs = require('fs'), - path = require('path'), user = require('./../user'), categories = require('./../categories'), @@ -13,14 +11,11 @@ var async = require('async'), plugins = require('./../plugins'), widgets = require('./../widgets'), groups = require('./../groups'), - pkg = require('./../../package.json'), - image = require('./../image'), - file = require('./../file'); + pkg = require('./../../package.json'); var adminController = { - users: {}, categories: {}, topics: {}, groups: {}, @@ -31,7 +26,8 @@ var adminController = { languages: {}, settings: {}, logger: {}, - uploads: {} + users: require('./admin/users'), + uploads: require('./admin/uploads') }; adminController.home = function(req, res, next) { @@ -42,65 +38,6 @@ adminController.home = function(req, res, next) { }); }; -adminController.users.search = function(req, res, next) { - res.render('admin/users', { - search_display: 'block', - loadmore_display: 'none', - users: [] - }); -}; - -adminController.users.latest = function(req, res, next) { - user.getUsers('users:joindate', 0, 49, function(err, users) { - res.render('admin/users', { - search_display: 'none', - loadmore_display: 'block', - users: users, - yourid: req.user.uid - }); - }); -}; - -adminController.users.sortByPosts = function(req, res, next) { - user.getUsers('users:postcount', 0, 49, function(err, users) { - res.render('admin/users', { - search_display: 'none', - loadmore_display: 'block', - users: users, - yourid: req.user.uid - }); - }); -}; - -adminController.users.sortByReputation = function(req, res, next) { - user.getUsers('users:reputation', 0, 49, function(err, users) { - res.render('admin/users', { - search_display: 'none', - loadmore_display: 'block', - users: users, - yourid: req.user.uid - }); - }); -}; - -adminController.users.sortByJoinDate = function(req, res, next) { - user.getUsers('users:joindate', 0, 49, function(err, users) { - res.render('admin/users', { - search_display: 'none', - users: users, - yourid: req.user.uid - }); - }); -}; - -adminController.users.getCSV = function(req, res, next) { - user.getUsersCSV(function(err, data) { - res.attachment('users.csv'); - res.setHeader('Content-Type', 'text/csv'); - res.end(data); - }); -}; - adminController.categories.active = function(req, res, next) { categories.getAllCategories(0, function (err, data) { data.categories = data.categories.filter(function (category) { @@ -229,85 +166,4 @@ adminController.groups.get = function(req, res, next) { }); }; -function validateUpload(type, allowedTypes) { - if (allowedTypes.indexOf(type) === -1) { - var err = { - error: 'Invalid image type. Allowed types are: ' + allowedTypes.join(',') - }; - - res.send(req.xhr ? err : JSON.stringify(err)); - return false; - } - - return true; -} - -adminController.uploads.uploadImage = function(filename, req, res) { - function done(err, image) { - var er, rs; - fs.unlink(req.files.userPhoto.path); - - if(err) { - er = {error: err.message}; - return res.send(req.xhr ? er : JSON.stringify(er)); - } - - rs = {path: image.url}; - res.send(req.xhr ? rs : JSON.stringify(rs)); - } - - if(plugins.hasListeners('filter:uploadImage')) { - plugins.fireHook('filter:uploadImage', req.files.userPhoto, done); - } else { - file.saveFileToLocal(filename, req.files.userPhoto.path, done); - } -}; - -adminController.uploads.uploadCategoryPicture = function(req, res, next) { - var allowedTypes = ['image/png', 'image/jpeg', 'image/jpg', 'image/gif'], - params = null; - - try { - params = JSON.parse(req.body.params); - } catch (e) { - var err = { - error: 'Error uploading file! Error :' + e.message - }; - return res.send(req.xhr ? err : JSON.stringify(err)); - } - - if (validateUpload(req.files.userPhoto.type, allowedTypes)) { - var filename = 'category-' + params.cid + path.extname(req.files.userPhoto.name); - adminController.uploads.uploadImage(filename, req, res); - } -}; - -adminController.uploads.uploadFavicon = function(req, res, next) { - var allowedTypes = ['image/x-icon', 'image/vnd.microsoft.icon']; - - if (validateUpload(req.files.userPhoto.type, allowedTypes)) { - file.saveFileToLocal('favicon.ico', req.files.userPhoto.path, function(err, image) { - fs.unlink(req.files.userPhoto.path); - - if(err) { - return res.send(req.xhr ? err : JSON.stringify(err)); - } - - var rs = {path: image.url}; - res.send(req.xhr ? rs : JSON.stringify(rs)); - }); - } -}; - -adminController.uploads.uploadLogo = function(req, res, next) { - var allowedTypes = ['image/png', 'image/jpeg', 'image/pjpeg', 'image/jpg', 'image/gif'], - er; - - if (validateUpload(req.files.userPhoto.type, allowedTypes)) { - var filename = 'site-logo' + path.extname(req.files.userPhoto.name); - adminController.uploads.uploadImage(filename, req, res); - } -}; - - module.exports = adminController; \ No newline at end of file diff --git a/src/controllers/admin/uploads.js b/src/controllers/admin/uploads.js new file mode 100644 index 0000000000..525be7173c --- /dev/null +++ b/src/controllers/admin/uploads.js @@ -0,0 +1,93 @@ +"use strict"; + +var fs = require('fs'), + path = require('path'), + file = require('./../../file'), + plugins = require('./../../plugins'); + + +var uploadsController = {}; + +function validateUpload(res, req, allowedTypes) { + if (allowedTypes.indexOf(req.files.userPhoto.type) === -1) { + var err = { + error: 'Invalid image type. Allowed types are: ' + allowedTypes.join(', ') + }; + + res.send(req.xhr ? err : JSON.stringify(err)); + return false; + } + + return true; +} + + + +uploadsController.uploadImage = function(filename, req, res) { + function done(err, image) { + var er, rs; + fs.unlink(req.files.userPhoto.path); + + if(err) { + er = {error: err.message}; + return res.send(req.xhr ? er : JSON.stringify(er)); + } + + rs = {path: image.url}; + res.send(req.xhr ? rs : JSON.stringify(rs)); + } + + if(plugins.hasListeners('filter:uploadImage')) { + plugins.fireHook('filter:uploadImage', req.files.userPhoto, done); + } else { + file.saveFileToLocal(filename, req.files.userPhoto.path, done); + } +}; + +uploadsController.uploadCategoryPicture = function(req, res, next) { + var allowedTypes = ['image/png', 'image/jpeg', 'image/jpg', 'image/gif'], + params = null; + + try { + params = JSON.parse(req.body.params); + } catch (e) { + var err = { + error: 'Error uploading file! Error :' + e.message + }; + return res.send(req.xhr ? err : JSON.stringify(err)); + } + + if (validateUpload(res, req, allowedTypes)) { + var filename = 'category-' + params.cid + path.extname(req.files.userPhoto.name); + uploadsController.uploadImage(filename, req, res); + } +}; + +uploadsController.uploadFavicon = function(req, res, next) { + var allowedTypes = ['image/x-icon', 'image/vnd.microsoft.icon']; + + if (validateUpload(res, req, allowedTypes)) { + file.saveFileToLocal('favicon.ico', req.files.userPhoto.path, function(err, image) { + fs.unlink(req.files.userPhoto.path); + + if(err) { + return res.send(req.xhr ? err : JSON.stringify(err)); + } + + var rs = {path: image.url}; + res.send(req.xhr ? rs : JSON.stringify(rs)); + }); + } +}; + +uploadsController.uploadLogo = function(req, res, next) { + var allowedTypes = ['image/png', 'image/jpeg', 'image/pjpeg', 'image/jpg', 'image/gif'], + er; + + if (validateUpload(res, req, allowedTypes)) { + var filename = 'site-logo' + path.extname(req.files.userPhoto.name); + uploadsController.uploadImage(filename, req, res); + } +}; + +module.exports = uploadsController; \ No newline at end of file diff --git a/src/controllers/admin/users.js b/src/controllers/admin/users.js new file mode 100644 index 0000000000..6bd64ef23b --- /dev/null +++ b/src/controllers/admin/users.js @@ -0,0 +1,67 @@ +"use strict"; + +var user = require('./../../user'); + + +var usersController = {}; + +usersController.search = function(req, res, next) { + res.render('admin/users', { + search_display: 'block', + loadmore_display: 'none', + users: [] + }); +}; + +usersController.latest = function(req, res, next) { + user.getUsers('users:joindate', 0, 49, function(err, users) { + res.render('admin/users', { + search_display: 'none', + loadmore_display: 'block', + users: users, + yourid: req.user.uid + }); + }); +}; + +usersController.sortByPosts = function(req, res, next) { + user.getUsers('users:postcount', 0, 49, function(err, users) { + res.render('admin/users', { + search_display: 'none', + loadmore_display: 'block', + users: users, + yourid: req.user.uid + }); + }); +}; + +usersController.sortByReputation = function(req, res, next) { + user.getUsers('users:reputation', 0, 49, function(err, users) { + res.render('admin/users', { + search_display: 'none', + loadmore_display: 'block', + users: users, + yourid: req.user.uid + }); + }); +}; + +usersController.sortByJoinDate = function(req, res, next) { + user.getUsers('users:joindate', 0, 49, function(err, users) { + res.render('admin/users', { + search_display: 'none', + users: users, + yourid: req.user.uid + }); + }); +}; + +usersController.getCSV = function(req, res, next) { + user.getUsersCSV(function(err, data) { + res.attachment('users.csv'); + res.setHeader('Content-Type', 'text/csv'); + res.end(data); + }); +}; + +module.exports = usersController; \ No newline at end of file