From 7319f1eb753506ae936cbb0e3d1ff82be7ac1225 Mon Sep 17 00:00:00 2001 From: OldHawk Date: Sat, 8 Jul 2017 00:08:55 +0800 Subject: [PATCH] feat(forums): load last_reply data in forum list page --- .../controllers/forums.client.controller.js | 1 + modules/forums/client/less/forum.less | 15 +++++++++ .../client/views/index.client.view.html | 32 +++++++++++++++++-- .../controllers/forums.server.controller.js | 19 ++++++++--- .../server/models/forum.server.model.js | 11 +------ 5 files changed, 62 insertions(+), 16 deletions(-) diff --git a/modules/forums/client/controllers/forums.client.controller.js b/modules/forums/client/controllers/forums.client.controller.js index f13d094a..0d7b65ff 100644 --- a/modules/forums/client/controllers/forums.client.controller.js +++ b/modules/forums/client/controllers/forums.client.controller.js @@ -20,6 +20,7 @@ vm.init = function () { ForumsService.query({}, function (items) { vm.forums = items; + console.log(items); }); }; diff --git a/modules/forums/client/less/forum.less b/modules/forums/client/less/forum.less index 43e134d9..d24ed280 100644 --- a/modules/forums/client/less/forum.less +++ b/modules/forums/client/less/forum.less @@ -97,6 +97,21 @@ } } } + .reply-by { + color: #666; + } + .text-long { + @media (min-width: @screen-lg-min) { + max-width: 260px; + } + @media (max-width: @screen-lg-min) { + max-width: 200px; + } + font-weight: bold; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } } &:hover { background-color: #f1f6fb; diff --git a/modules/forums/client/views/index.client.view.html b/modules/forums/client/views/index.client.view.html index 6d13bbcc..6b74b2f8 100644 --- a/modules/forums/client/views/index.client.view.html +++ b/modules/forums/client/views/index.client.view.html @@ -66,8 +66,36 @@ {{f.topicCount}} {{f.replyCount}} - -
+ +
+
+ +
+ + +
+
+
+
+
+ +
+ + +
+
+
+
diff --git a/modules/forums/server/controllers/forums.server.controller.js b/modules/forums/server/controllers/forums.server.controller.js index f8691597..927ed847 100644 --- a/modules/forums/server/controllers/forums.server.controller.js +++ b/modules/forums/server/controllers/forums.server.controller.js @@ -19,17 +19,23 @@ var path = require('path'), */ exports.list = function (req, res) { Forum.find() - .sort('order -createdat') - .populate('lastNewTopic') - .populate('lastReplyTopic') + .sort('category order -createdat') + .populate({ + path: 'lastTopic', + populate: { + path: 'user lastUser', + select: 'username displayName profileImageURL uploaded downloaded' + } + }) .populate('moderators', 'username displayName profileImageURL uploaded downloaded') .exec(function (err, forums) { if (err) { return res.status(422).send({ message: errorHandler.getErrorMessage(err) }); + } else { + res.status(200).send(forums); } - res.json(forums); }); }; @@ -86,4 +92,9 @@ exports.postNewTopic = function (req, res) { res.json(topic); } }); + + forum.update({ + $inc: {topicCount: 1}, + lastTopic: topic + }).exec(); }; diff --git a/modules/forums/server/models/forum.server.model.js b/modules/forums/server/models/forum.server.model.js index 99843e1a..c9c16f76 100644 --- a/modules/forums/server/models/forum.server.model.js +++ b/modules/forums/server/models/forum.server.model.js @@ -47,16 +47,8 @@ var ForumSchema = new Schema({ type: Number, default: 0 }, - todayCount: { - type: Number, - default: 0 - }, - lastNewTopic: { - type: Schema.Types.ObjectId, - ref: 'Topic' - }, - lastReplyTopic: { + lastTopic: { type: Schema.Types.ObjectId, ref: 'Topic' }, @@ -72,5 +64,4 @@ var ForumSchema = new Schema({ } }); - mongoose.model('Forum', ForumSchema);