mirror of
https://github.com/taobataoma/meanTorrent.git
synced 2026-05-07 17:16:03 +02:00
feat(forums): post new topic
This commit is contained in:
@@ -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',
|
||||
|
||||
@@ -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: '查看数',
|
||||
|
||||
@@ -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');
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
}());
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
ForumsService.get({
|
||||
forumId: $stateParams.forumId
|
||||
}, function (item) {
|
||||
console.log(item);
|
||||
vm.forum = item;
|
||||
|
||||
vm.forumPath = [
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
function TopicsService($resource) {
|
||||
return $resource('/api/topics/:forumId', {
|
||||
forumId: '@_id'
|
||||
forumId: '@_forumId'
|
||||
}, {
|
||||
update: {
|
||||
method: 'PUT'
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
<div class="col-sm-offset-4 col-sm-8">
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" ng-model="vm.forum.readOnly"> {{'FORUMS.FIELDS.READONLY' | translate}}
|
||||
<input type="checkbox" ng-model="vm.forum.readOnly"> {{'FORUMS.FIELDS.READONLY_POST' | translate}}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -40,21 +40,47 @@
|
||||
<div class="post-view">
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<input class="form-control margin-bottom-10" name="title" type="text" placeholder="{{'FORUMS.FIELDS.TITLE' | translate}}"/>
|
||||
<textarea id="postContent" name="content"></textarea>
|
||||
<form name="vm.postForm" ng-submit="vm.postTopic(vm.postForm.$valid)" novalidate autocomplete="off">
|
||||
<div class="form-group" show-errors>
|
||||
<input id="postTitle" name="postTitle"
|
||||
class="form-control margin-bottom-10" ng-model="vm.postFields.title" type="text"
|
||||
placeholder="{{'FORUMS.FIELDS.TITLE' | translate}}" required autofocus>
|
||||
|
||||
<div class="margin-top-5" style="display: table;">
|
||||
<a class="message-extra" href="https://guides.github.com/features/mastering-markdown/" target="_blank"
|
||||
data-ga-click="Markdown Toolbar, click, help">
|
||||
<svg aria-hidden="true" height="16" version="1.1"
|
||||
viewBox="0 0 16 16" width="16">
|
||||
<path fill-rule="evenodd"
|
||||
d="M14.85 3H1.15C.52 3 0 3.52 0 4.15v7.69C0 12.48.52 13 1.15 13h13.69c.64 0 1.15-.52 1.15-1.15v-7.7C16 3.52 15.48 3 14.85 3zM9 11H7V8L5.5 9.92 4 8v3H2V5h2l1.5 2L7 5h2v6zm2.99.5L9.5 8H11V5h2v3h1.5l-2.51 3.5z"/>
|
||||
</svg>
|
||||
{{ 'MARKDOWN_LINK' | translate }}
|
||||
</a>
|
||||
</div>
|
||||
<button class="btn btn-success pull-right">{{'FORUMS.BTN_SUBMIT' | translate}}</button>
|
||||
<div ng-messages="vm.postForm.postTitle.$error" role="alert">
|
||||
<p class="help-block error-text" ng-message="required">{{ 'FORUMS.PT_REQUIRED' | translate}}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" show-errors>
|
||||
<textarea id="postContent" name="postContent" ng-model="vm.postFields.content" mt-markdown-editor required></textarea>
|
||||
|
||||
<div ng-messages="vm.postForm.postContent.$error" role="alert">
|
||||
<p class="help-block error-text" ng-message="required">{{ 'FORUMS.PC_REQUIRED' | translate}}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="checkbox">
|
||||
<label>
|
||||
<input type="checkbox" ng-model="vm.postFields.readOnly"> {{'FORUMS.FIELDS.READONLY_REPLY' | translate}}
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<li class="status-divider"></li>
|
||||
|
||||
<div class="margin-top-5" style="display: table;">
|
||||
<a class="message-extra" href="https://guides.github.com/features/mastering-markdown/" target="_blank"
|
||||
data-ga-click="Markdown Toolbar, click, help">
|
||||
<svg aria-hidden="true" height="16" version="1.1"
|
||||
viewBox="0 0 16 16" width="16">
|
||||
<path fill-rule="evenodd"
|
||||
d="M14.85 3H1.15C.52 3 0 3.52 0 4.15v7.69C0 12.48.52 13 1.15 13h13.69c.64 0 1.15-.52 1.15-1.15v-7.7C16 3.52 15.48 3 14.85 3zM9 11H7V8L5.5 9.92 4 8v3H2V5h2l1.5 2L7 5h2v6zm2.99.5L9.5 8H11V5h2v3h1.5l-2.51 3.5z"/>
|
||||
</svg>
|
||||
{{ 'MARKDOWN_LINK' | translate }}
|
||||
</a>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-success pull-right">{{'FORUMS.BTN_SUBMIT' | translate}}
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
@@ -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);
|
||||
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user