diff --git a/modules/core/client/app/trans-string-en.js b/modules/core/client/app/trans-string-en.js index 66a06ebd..337d4017 100644 --- a/modules/core/client/app/trans-string-en.js +++ b/modules/core/client/app/trans-string-en.js @@ -634,6 +634,12 @@ DELETE_CONFIRM_CANCEL: 'Cancel', DELETE_CONFIRM_HEADER_TEXT: 'Delete Confirm', DELETE_CONFIRM_BODY_TEXT: 'Are you sure want to delete this forum?', + MODERATOR_TITLE: 'Add Moderator', + ADD_MODERATOR_SUCCESSFULLY: 'Add moderator successfully', + ADD_MODERATOR_FAILED: 'Add moderator failed', + REMOVE_MODERATOR_SUCCESSFULLY: 'Remove moderator successfully', + REMOVE_MODERATOR_FAILED: 'Remove moderator failed', + REMOVE_CONFIRM_BODY_TEXT: 'Are you sure want to delete this moderator?', CATEGORY: { AFFAIRS: 'Affairs', DISCUSS: 'Discuss', diff --git a/modules/core/client/app/trans-string-zh.js b/modules/core/client/app/trans-string-zh.js index 93ded9e4..4784905b 100644 --- a/modules/core/client/app/trans-string-zh.js +++ b/modules/core/client/app/trans-string-zh.js @@ -634,6 +634,12 @@ DELETE_CONFIRM_CANCEL: '取消', DELETE_CONFIRM_HEADER_TEXT: '删除确认', DELETE_CONFIRM_BODY_TEXT: '您确定要删除这个版块吗?', + MODERATOR_TITLE: '添加版主', + ADD_MODERATOR_SUCCESSFULLY: '添加版主成功', + ADD_MODERATOR_FAILED: '添加版主失败', + REMOVE_MODERATOR_SUCCESSFULLY: '删除版主成功', + REMOVE_MODERATOR_FAILED: '删除版主失败', + REMOVE_CONFIRM_BODY_TEXT: '您确定要删除该版主吗?', CATEGORY: { AFFAIRS: '站务区', DISCUSS: '讨论区', diff --git a/modules/forums/client/controllers/forums.client.controller.js b/modules/forums/client/controllers/forums.client.controller.js index f423dd10..81477375 100644 --- a/modules/forums/client/controllers/forums.client.controller.js +++ b/modules/forums/client/controllers/forums.client.controller.js @@ -14,6 +14,12 @@ vm.forumsConfig = MeanTorrentConfig.meanTorrentConfig.forumsConfig; vm.user = Authentication.user; + vm.addModeratorPopover = { + title: 'FORUMS.MODERATOR_TITLE', + templateUrl: 'add-moderator.html', + items: [] + }; + /** * init */ @@ -21,6 +27,10 @@ ForumsAdminService.query({}, function (items) { vm.forums = items; console.log(items); + + angular.forEach(vm.forums, function (f) { + vm.addModeratorPopover.items.push(f._id, false); + }); }); }; @@ -130,5 +140,59 @@ } }; + /** + * addModerator + */ + vm.addModerator = function () { + ForumsAdminService.addModerator({ + _id: vm.forum._id, + _username: vm.addModeratorPopover.username + }, function (res) { + NotifycationService.showSuccessNotify('FORUMS.ADD_MODERATOR_SUCCESSFULLY'); + vm.addModeratorPopover.items[vm.forum._id] = false; + vm.init(); + }, function (res) { + NotifycationService.showErrorNotify(res.data.message, 'FORUMS.ADD_MODERATOR_FAILED'); + vm.addModeratorPopover.items[vm.forum._id] = false; + }); + }; + + /** + * addModeratorClicked + * @param idx + */ + vm.addModeratorClicked = function (f) { + vm.addModeratorPopover.username = undefined; + vm.addModeratorPopover.items[f._id] = true; + + vm.forum = f; + }; + + /** + * removeModeratorClicked + * @param f forum + * @param m moderator + */ + vm.removeModeratorClicked = function (f, m) { + var modalOptions = { + closeButtonText: $translate.instant('FORUMS.DELETE_CONFIRM_CANCEL'), + actionButtonText: $translate.instant('FORUMS.DELETE_CONFIRM_OK'), + headerText: $translate.instant('FORUMS.DELETE_CONFIRM_HEADER_TEXT'), + bodyText: $translate.instant('FORUMS.REMOVE_CONFIRM_BODY_TEXT') + }; + + ModalConfirmService.showModal({}, modalOptions) + .then(function (result) { + ForumsAdminService.removeModerator({ + _id: f._id, + _username: m.username + }, function (res) { + NotifycationService.showSuccessNotify('FORUMS.REMOVE_MODERATOR_SUCCESSFULLY'); + vm.init(); + }, function (res) { + NotifycationService.showErrorNotify(res.data.message, 'FORUMS.REMOVE_MODERATOR_FAILED'); + }); + }); + }; } }()); diff --git a/modules/forums/client/less/forum.less b/modules/forums/client/less/forum.less index f4454494..2909192c 100644 --- a/modules/forums/client/less/forum.less +++ b/modules/forums/client/less/forum.less @@ -30,3 +30,10 @@ color: #999; } } + +.add-moderator-popover { + max-width: 250px; + max-height: 150px; + width: 250px; + height: auto; +} diff --git a/modules/forums/client/services/forums.client.service.js b/modules/forums/client/services/forums.client.service.js index 0991999e..ea5804c3 100644 --- a/modules/forums/client/services/forums.client.service.js +++ b/modules/forums/client/services/forums.client.service.js @@ -13,6 +13,22 @@ }, { update: { method: 'PUT' + }, + addModerator: { + method: 'PUT', + url: '/api/admin/forums/:forumId/addModerator/:username', + params: { + forumId: '@_id', + username: '@_username' + } + }, + removeModerator: { + method: 'PUT', + url: '/api/admin/forums/:forumId/removeModerator/:username', + params: { + forumId: '@_id', + username: '@_username' + } } }); } diff --git a/modules/forums/client/views/admin/configure.client.view.html b/modules/forums/client/views/admin/configure.client.view.html index d7c4fff6..5fa57cd5 100644 --- a/modules/forums/client/views/admin/configure.client.view.html +++ b/modules/forums/client/views/admin/configure.client.view.html @@ -22,12 +22,34 @@