diff --git a/modules/forums/server/config/forums.server.config.js b/modules/forums/server/config/forums.server.config.js new file mode 100644 index 00000000..629c3606 --- /dev/null +++ b/modules/forums/server/config/forums.server.config.js @@ -0,0 +1,14 @@ +'use strict'; + +/** + * Module dependencies + */ +var path = require('path'), + config = require(path.resolve('./config/config')); + +/** + * Module init function. + */ +module.exports = function (app, db) { + +}; diff --git a/modules/forums/server/controllers/forums.server.controller.js b/modules/forums/server/controllers/forums.server.controller.js new file mode 100644 index 00000000..d6fcd828 --- /dev/null +++ b/modules/forums/server/controllers/forums.server.controller.js @@ -0,0 +1,120 @@ +'use strict'; + +/** + * Module dependencies + */ +var path = require('path'), + config = require(path.resolve('./config/config')), + mongoose = require('mongoose'), + errorHandler = require(path.resolve('./modules/core/server/controllers/errors.server.controller')), + User = mongoose.model('User'), + Forum = mongoose.model('Forum'), + Topic = mongoose.model('Topic'), + async = require('async'); + +/** + * create a forum + * @param req + * @param res + */ +exports.create = function (req, res) { + var forum = new Forum(req.body); + + forum.save(function (err) { + if (err) { + return res.status(422).send({ + message: errorHandler.getErrorMessage(err) + }); + } else { + res.json(forum); + } + }); +}; + +/** + * list forums + * @param req + * @param res + */ +exports.list = function (req, res) { + Forum.find() + .sort('order -createdat') + .populate('lastTopic') + .populate('moderators', 'username displayName profileImageURL uploaded downloaded') + .exec(function (err, forums) { + if (err) { + return res.status(422).send({ + message: errorHandler.getErrorMessage(err) + }); + } + res.json(forums); + }); +}; + +/** + * Update an forum + */ +exports.update = function (req, res) { + var forum = req.forum; + + forum.name = req.body.name; + forum.desc = req.body.desc; + forum.order = req.body.order; + forum.readOnly = req.body.readOnly; + + forum.save(function (err) { + if (err) { + return res.status(422).send({ + message: errorHandler.getErrorMessage(err) + }); + } else { + res.json(forum); + } + }); +}; + +/** + * delete forum + * @param req + * @param res + */ +exports.delete = function (req, res) { + var forum = req.forum; + forum.remove(function (err) { + if (err) { + return res.status(422).send({ + message: errorHandler.getErrorMessage(err) + }); + } else { + res.json(forum); + } + }); +}; + +/** + * Invitation middleware + */ +exports.forumByID = function (req, res, next, id) { + + if (!mongoose.Types.ObjectId.isValid(id)) { + return res.status(400).send({ + message: 'Forum is invalid' + }); + } + + Forum.findById(id) + .populate('lastTopic') + .populate('moderators', 'username displayName profileImageURL uploaded downloaded') + .exec(function (err, forum) { + if (err) { + return next(err); + } else if (!forum) { + return res.status(404).send({ + message: 'No forum with that identifier has been found' + }); + } + req.forum = forum; + next(); + }); +}; +