diff --git a/modules/core/client/app/trans-string-en.js b/modules/core/client/app/trans-string-en.js index 97fd743f..e10943d8 100644 --- a/modules/core/client/app/trans-string-en.js +++ b/modules/core/client/app/trans-string-en.js @@ -663,6 +663,8 @@ TOPIC_EDIT_FAILED: 'Reply content modify failed', TOPIC_TOGGLE_READONLY_SUCCESSFULLY: 'Toggle set topic readonly successfully', TOPIC_TOGGLE_READONLY_FAILED: 'Toggle set topic readonly failed', + TOPIC_TOGGLE_TOP_SUCCESSFULLY: 'Toggle set topic top status successfully', + TOPIC_TOGGLE_TOP_FAILED: 'Toggle set topic top status failed', REPLY_EDIT_SUCCESSFULLY: 'Reply content modify successfully', REPLY_EDIT_FAILED: 'Reply content modify failed', DELETE_TOPIC_SUCCESSFULLY: 'Topic deleted successfully', @@ -721,6 +723,7 @@ REPLY_DELETE: 'delete reply', TOPIC_EDIT: 'edit topic', TOPIC_DELETE: 'delete topic', + TOPIC_TOP_TOPIC: 'top status', TOPIC_THUMBS_UP: 'thumbs up and donate score' } }, diff --git a/modules/core/client/app/trans-string-zh.js b/modules/core/client/app/trans-string-zh.js index 0465e7c1..6324282d 100644 --- a/modules/core/client/app/trans-string-zh.js +++ b/modules/core/client/app/trans-string-zh.js @@ -663,6 +663,8 @@ TOPIC_EDIT_FAILED: '话题内容编辑失败', TOPIC_TOGGLE_READONLY_SUCCESSFULLY: '只读状态切换成功', TOPIC_TOGGLE_READONLY_FAILED: '只读状态切换失败', + TOPIC_TOGGLE_TOP_SUCCESSFULLY: '置顶状态切换成功', + TOPIC_TOGGLE_TOP_FAILED: '置顶状态切换失败', REPLY_EDIT_SUCCESSFULLY: '回复内容修改成功', REPLY_EDIT_FAILED: '回复内容修改失败', DELETE_TOPIC_SUCCESSFULLY: '话题删除成功', @@ -721,6 +723,7 @@ REPLY_DELETE: '删除回复', TOPIC_EDIT: '编辑话题', TOPIC_DELETE: '删除话题', + TOPIC_TOP_TOPIC: '置顶话题', TOPIC_THUMBS_UP: '点赞送分' } }, diff --git a/modules/forums/client/controllers/forums-topic.client.controller.js b/modules/forums/client/controllers/forums-topic.client.controller.js index 8672f3e3..f69c8b8c 100644 --- a/modules/forums/client/controllers/forums-topic.client.controller.js +++ b/modules/forums/client/controllers/forums-topic.client.controller.js @@ -264,6 +264,24 @@ }); }; + /** + * beginTopTopic + * @param t + */ + vm.beginTopTopic = function (t) { + var topic = new TopicsService({ + forum: vm.forum._id, + _id: t._id + }); + + topic.$toggleTopicTopStatus(function (res) { + vm.topic = res; + NotifycationService.showSuccessNotify('FORUMS.TOPIC_TOGGLE_TOP_SUCCESSFULLY'); + }, function (res) { + NotifycationService.showErrorNotify(res.data.message, 'FORUMS.TOPIC_TOGGLE_TOP_FAILED'); + }); + }; + /** * beginDeleteReply * @param reply diff --git a/modules/forums/client/services/topics.client.service.js b/modules/forums/client/services/topics.client.service.js index bd3244f6..ecd912e4 100644 --- a/modules/forums/client/services/topics.client.service.js +++ b/modules/forums/client/services/topics.client.service.js @@ -23,6 +23,14 @@ topicId: '@_id' } }, + toggleTopicTopStatus: { + method: 'PUT', + url: '/api/topics/:forumId/:topicId/toggleTopicTopStatus', + params: { + forumId: '@forum', + topicId: '@_id' + } + }, thumbsUp: { method: 'PUT', url: '/api/topics/:forumId/:topicId/thumbsUp', diff --git a/modules/forums/client/views/topic.client.view.html b/modules/forums/client/views/topic.client.view.html index a6428bc1..aae9b379 100644 --- a/modules/forums/client/views/topic.client.view.html +++ b/modules/forums/client/views/topic.client.view.html @@ -54,7 +54,7 @@ {{'FORUMS.BTN_POST_NEW_REPLY' | translate}} {{ vm.topic.readOnly ? 'FORUMS.BTN_UNSET_READONLY' : 'FORUMS.BTN_SET_READONLY' | translate}} @@ -115,6 +115,10 @@ title="{{'FORUMS.TITLES.TOPIC_DELETE' | translate}}" ng-show="vm.canEdit(vm.topic);" ng-click="vm.beginDeleteTopic(vm.topic);"> + + title="{{'FORUMS.TITLES.TOPIC_THUMBS_UP' | translate}}">({{rep._scoreList.length}})
F{{$index+2}}
diff --git a/modules/forums/client/views/view.client.view.html b/modules/forums/client/views/view.client.view.html index aec913e5..9b8a79b8 100644 --- a/modules/forums/client/views/view.client.view.html +++ b/modules/forums/client/views/view.client.view.html @@ -77,6 +77,9 @@

+ {{t.title}} R

diff --git a/modules/forums/server/controllers/forums.server.controller.js b/modules/forums/server/controllers/forums.server.controller.js index c23d7531..191110d8 100644 --- a/modules/forums/server/controllers/forums.server.controller.js +++ b/modules/forums/server/controllers/forums.server.controller.js @@ -292,6 +292,27 @@ exports.toggleTopicReadonly = function (req, res) { }); }; +/** + * toggleTopicTopStatus + * @param req + * @param res + */ +exports.toggleTopicTopStatus = function (req, res) { + var topic = req.topic; + + topic.isTop = !topic.isTop; + + topic.save(function (err) { + if (err) { + return res.status(422).send({ + message: errorHandler.getErrorMessage(err) + }); + } else { + res.json(topic); + } + }); +}; + /** * thumbsUp * @param req diff --git a/modules/forums/server/models/topic.server.model.js b/modules/forums/server/models/topic.server.model.js index e6438ec7..919a7aaf 100644 --- a/modules/forums/server/models/topic.server.model.js +++ b/modules/forums/server/models/topic.server.model.js @@ -118,8 +118,8 @@ var TopicSchema = new Schema({ _scoreList: [ThumbSchema], isTop: { - type: Number, - default: 0 + type: Boolean, + default: false }, lastUser: { type: Schema.Types.ObjectId, diff --git a/modules/forums/server/policies/forums.server.policy.js b/modules/forums/server/policies/forums.server.policy.js index 0cbb2777..52df8561 100644 --- a/modules/forums/server/policies/forums.server.policy.js +++ b/modules/forums/server/policies/forums.server.policy.js @@ -26,6 +26,7 @@ exports.invokeRolesPolicies = function () { {resources: '/api/topics/:forumId/:topicId', permissions: '*'}, {resources: '/api/topics/:forumId/:topicId/:replyId', permissions: '*'}, {resources: '/api/topics/:forumId/:topicId/toggleTopicReadonly', permissions: '*'}, + {resources: '/api/topics/:forumId/:topicId/toggleTopicTopStatus', permissions: '*'}, {resources: '/api/topics/:forumId/:topicId/thumbsUp', permissions: '*'} ] }, diff --git a/modules/forums/server/routes/forums.server.routes.js b/modules/forums/server/routes/forums.server.routes.js index 3b9fc8a2..3361be1a 100644 --- a/modules/forums/server/routes/forums.server.routes.js +++ b/modules/forums/server/routes/forums.server.routes.js @@ -34,6 +34,9 @@ module.exports = function (app) { app.route('/api/topics/:forumId/:topicId/toggleTopicReadonly').all(forumsPolicy.isAllowed) .put(forums.toggleTopicReadonly); + app.route('/api/topics/:forumId/:topicId/toggleTopicTopStatus').all(forumsPolicy.isAllowed) + .put(forums.toggleTopicTopStatus); + app.route('/api/topics/:forumId/:topicId/thumbsUp').all(forumsPolicy.isAllowed) .put(forums.thumbsUp);