diff --git a/modules/core/client/app/trans-string-en.js b/modules/core/client/app/trans-string-en.js index 204d1ed8..6e647f8e 100644 --- a/modules/core/client/app/trans-string-en.js +++ b/modules/core/client/app/trans-string-en.js @@ -646,6 +646,10 @@ REMOVE_MODERATOR_SUCCESSFULLY: 'Remove moderator successfully', REMOVE_MODERATOR_FAILED: 'Remove moderator failed', REMOVE_CONFIRM_BODY_TEXT: 'Are you sure want to delete this moderator?', + PT_REQUIRED: 'Please enter topic title', + PC_REQUIRED: 'Please enter topic content', + POST_SEND_SUCCESSFULLY: 'Post new topic successfully', + POST_SEND_FAILED: 'Post new topic failed', CATEGORY: { AFFAIRS: 'Affairs', DISCUSS: 'Discuss', @@ -658,7 +662,8 @@ MODERATORS: 'Moderators', DESC: 'Description', CATEGORY: 'Category', - READONLY: 'Only oper/admin can post new topic', + READONLY_POST: 'Only oper/admin can post new topic', + READONLY_REPLY: 'disabled user to post new topic', TOPICS: 'Topics', REPLIES: 'Replies', VIEWS: 'Views', diff --git a/modules/core/client/app/trans-string-zh.js b/modules/core/client/app/trans-string-zh.js index ecd07327..10811424 100644 --- a/modules/core/client/app/trans-string-zh.js +++ b/modules/core/client/app/trans-string-zh.js @@ -646,6 +646,10 @@ REMOVE_MODERATOR_SUCCESSFULLY: '删除版主成功', REMOVE_MODERATOR_FAILED: '删除版主失败', REMOVE_CONFIRM_BODY_TEXT: '您确定要删除该版主吗?', + PT_REQUIRED: '请输入话题标题', + PC_REQUIRED: '请输入话题内容', + POST_SEND_SUCCESSFULLY: '新话题发布成功', + POST_SEND_FAILED: '新话题发布失败', CATEGORY: { AFFAIRS: '站务区', DISCUSS: '讨论区', @@ -658,7 +662,8 @@ MODERATORS: '版主', DESC: '描述', CATEGORY: '分类', - READONLY: '只有管理员可以发起新话题', + READONLY_POST: '只有管理员可以发起新话题', + READONLY_REPLY: '禁止普通用户回复该话题', TOPICS: '主题数', REPLIES: '回贴数', VIEWS: '查看数', diff --git a/modules/forums/client/controllers/forums-post.client.controller.js b/modules/forums/client/controllers/forums-post.client.controller.js index 25c9ceca..811c84b1 100644 --- a/modules/forums/client/controllers/forums-post.client.controller.js +++ b/modules/forums/client/controllers/forums-post.client.controller.js @@ -6,10 +6,10 @@ .controller('ForumsPostController', ForumsPostController); ForumsPostController.$inject = ['$scope', '$state', '$translate', 'Authentication', 'MeanTorrentConfig', 'ForumsService', 'SideOverlay', '$filter', 'NotifycationService', - 'marked', 'ModalConfirmService', '$stateParams', 'TopicsService', 'localStorageService']; + 'marked', 'ModalConfirmService', '$stateParams', 'TopicsService']; function ForumsPostController($scope, $state, $translate, Authentication, MeanTorrentConfig, ForumsService, SideOverlay, $filter, NotifycationService, - marked, ModalConfirmService, $stateParams, TopicsService, localStorageService) { + marked, ModalConfirmService, $stateParams, TopicsService) { var vm = this; vm.forumsConfig = MeanTorrentConfig.meanTorrentConfig.forumsConfig; vm.user = Authentication.user; @@ -18,20 +18,10 @@ * init */ vm.init = function () { - $("#postContent").markdown({ - autofocus:false, - savable:false, - iconlibrary: 'fa', - resize: 'vertical', - language: localStorageService.get('storage_user_lang'), - fullscreen: { enable: false} - }); - // get forum info by state params ForumsService.get({ forumId: $stateParams.forumId }, function (item) { - console.log(item); vm.forum = item; vm.forumPath = [ @@ -41,5 +31,39 @@ }); }; + + /** + * postTopic + * @param isValid + * @returns {boolean} + */ + vm.postTopic = function (isValid) { + if (!isValid) { + $scope.$broadcast('show-errors-check-validity', 'vm.postForm'); + return false; + } + + var post = new TopicsService(vm.postFields); + post._forumId = vm.forum._id; + + post.$save(function (response) { + successCallback(response); + }, function (errorResponse) { + errorCallback(errorResponse); + }); + + function successCallback(res) { + vm.postFields = {}; + $scope.$broadcast('show-errors-reset', 'vm.postForm'); + NotifycationService.showSuccessNotify('POST_SEND_SUCCESSFULLY'); + + $state.reload(); + } + + function errorCallback(res) { + NotifycationService.showErrorNotify(res.data.message, 'POST_SEND_FAILED'); + } + }; + } }()); diff --git a/modules/forums/client/controllers/forums-view.client.controller.js b/modules/forums/client/controllers/forums-view.client.controller.js index fe532940..ac6c5050 100644 --- a/modules/forums/client/controllers/forums-view.client.controller.js +++ b/modules/forums/client/controllers/forums-view.client.controller.js @@ -22,7 +22,6 @@ ForumsService.get({ forumId: $stateParams.forumId }, function (item) { - console.log(item); vm.forum = item; vm.forumPath = [ diff --git a/modules/forums/client/services/topics.client.service.js b/modules/forums/client/services/topics.client.service.js index cbd5d7b6..ec520e35 100644 --- a/modules/forums/client/services/topics.client.service.js +++ b/modules/forums/client/services/topics.client.service.js @@ -9,7 +9,7 @@ function TopicsService($resource) { return $resource('/api/topics/:forumId', { - forumId: '@_id' + forumId: '@_forumId' }, { update: { method: 'PUT' diff --git a/modules/forums/client/views/admin/configure.client.view.html b/modules/forums/client/views/admin/configure.client.view.html index 3c24f8ab..6834aeb9 100644 --- a/modules/forums/client/views/admin/configure.client.view.html +++ b/modules/forums/client/views/admin/configure.client.view.html @@ -92,7 +92,7 @@
diff --git a/modules/forums/client/views/post.client.view.html b/modules/forums/client/views/post.client.view.html index 527080c4..3d4f602a 100644 --- a/modules/forums/client/views/post.client.view.html +++ b/modules/forums/client/views/post.client.view.html @@ -40,21 +40,47 @@
- - +
+
+ - - +
+

{{ 'FORUMS.PT_REQUIRED' | translate}}

+
+
+ +
+ + +
+

{{ 'FORUMS.PC_REQUIRED' | translate}}

+
+
+ +
+ +
+ +
  • + + + +
    diff --git a/modules/forums/server/controllers/forums.server.controller.js b/modules/forums/server/controllers/forums.server.controller.js index 9ce319e9..f8691597 100644 --- a/modules/forums/server/controllers/forums.server.controller.js +++ b/modules/forums/server/controllers/forums.server.controller.js @@ -65,3 +65,25 @@ exports.listTopics = function (req, res) { res.json(topics); }); }; + +/** + * postNewTopic + * @param req + * @param res + */ +exports.postNewTopic = function (req, res) { + var forum = req.forum; + var topic = new Topic(req.body); + topic.forum = forum; + topic.user = req.user; + + topic.save(function (err) { + if (err) { + return res.status(422).send({ + message: errorHandler.getErrorMessage(err) + }); + } else { + res.json(topic); + } + }); +}; diff --git a/modules/forums/server/routes/forums.server.routes.js b/modules/forums/server/routes/forums.server.routes.js index 4b8ac903..0382ccc6 100644 --- a/modules/forums/server/routes/forums.server.routes.js +++ b/modules/forums/server/routes/forums.server.routes.js @@ -17,6 +17,7 @@ module.exports = function (app) { //Single article routes app.route('/api/topics/:forumId').all(forumsPolicy.isAllowed) + .post(forums.postNewTopic) .get(forums.listTopics); };