diff --git a/modules/about/client/controllers/about.client.controller.js b/modules/about/client/controllers/about.client.controller.js
index d5d68895..bf5f672b 100644
--- a/modules/about/client/controllers/about.client.controller.js
+++ b/modules/about/client/controllers/about.client.controller.js
@@ -29,6 +29,12 @@
uibButtonConfig.activeClass = 'btn-success';
+ vm.addMemberPopover = {
+ title: 'ABOUT.ADD_MEMBER_TITLE',
+ templateUrl: 'add-member.html',
+ isOpen: false
+ };
+
vm.init = function () {
};
@@ -149,6 +155,24 @@
}
};
+ /**
+ * isFounder
+ * @param u
+ * @param m
+ * @returns {boolean}
+ */
+ vm.isFounder = function (u, m) {
+ if (m && u) {
+ if (m.user._id === u._id) {
+ return true;
+ } else {
+ return false;
+ }
+ } else {
+ return false;
+ }
+ };
+
/**
* getMakerDescContent
* @param m
@@ -158,6 +182,50 @@
return m ? marked(m.desc, {sanitize: true}) : 'NULL';
};
+ /**
+ * addMember
+ */
+ vm.addMember = function () {
+ MakerGroupService.addMember({
+ _id: vm.maker._id,
+ _username: vm.addMemberPopover.username
+ }, function (res) {
+ vm.maker = res;
+ NotifycationService.showSuccessNotify('ABOUT.ADD_MEMBER_SUCCESSFULLY');
+ vm.addMemberPopover.isOpen = false;
+ }, function (res) {
+ NotifycationService.showErrorNotify(res.data.message, 'ABOUT.ADD_MEMBER_FAILED');
+ vm.addMemberPopover.isOpen = false;
+ });
+ };
+
+ /**
+ * removeMember
+ * @param f forum
+ * @param m moderator
+ */
+ vm.removeMember = function (m, u) {
+ var modalOptions = {
+ closeButtonText: $translate.instant('ABOUT.DELETE_CONFIRM_CANCEL'),
+ actionButtonText: $translate.instant('ABOUT.DELETE_CONFIRM_OK'),
+ headerText: $translate.instant('ABOUT.DELETE_CONFIRM_HEADER_TEXT'),
+ bodyText: $translate.instant('ABOUT.DELETE_MEMBER_CONFIRM_BODY_TEXT')
+ };
+
+ ModalConfirmService.showModal({}, modalOptions)
+ .then(function (result) {
+ MakerGroupService.removeMember({
+ _id: m._id,
+ _username: u.username
+ }, function (res) {
+ vm.maker = res;
+ NotifycationService.showSuccessNotify('ABOUT.REMOVE_MEMBER_SUCCESSFULLY');
+ }, function (res) {
+ NotifycationService.showErrorNotify(res.data.message, 'ABOUT.REMOVE_MEMBER_FAILED');
+ });
+ });
+ };
+
/**
* beginEditMakerDesc
* @param m
diff --git a/modules/about/client/less/about.less b/modules/about/client/less/about.less
index a3b0182c..1648ba35 100644
--- a/modules/about/client/less/about.less
+++ b/modules/about/client/less/about.less
@@ -226,9 +226,26 @@
width: 24px;
}
}
+ .maker-members {
+ .fa-remove {
+ cursor: pointer;
+ color: #888;
+ &:hover {
+ color: #fff;
+ }
+ }
+ }
.maker-button {
@media (max-width: @screen-xs-max) {
text-align: left !important;
}
}
}
+
+.add-member-popover {
+ max-width: 250px;
+ max-height: 150px;
+ width: 250px;
+ height: auto;
+}
+
diff --git a/modules/about/client/services/makers.client.service.js b/modules/about/client/services/makers.client.service.js
index 834e56d3..4147d9f3 100644
--- a/modules/about/client/services/makers.client.service.js
+++ b/modules/about/client/services/makers.client.service.js
@@ -27,16 +27,23 @@
params: {
makerId: '@_id'
}
+ },
+ addMember: {
+ method: 'PUT',
+ url: '/api/makers/:makerId/addMember/:username',
+ params: {
+ makerId: '@_id',
+ username: '@_username'
+ }
+ },
+ removeMember: {
+ method: 'PUT',
+ url: '/api/makers/:makerId/removeMember/:username',
+ params: {
+ makerId: '@_id',
+ username: '@_username'
+ }
}
- //,
- //addModerator: {
- // method: 'PUT',
- // url: '/api/admin/forums/:forumId/addModerator/:username',
- // params: {
- // forumId: '@_id',
- // username: '@_username'
- // }
- //}
});
}
}());
diff --git a/modules/about/client/views/maker-view.client.view.html b/modules/about/client/views/maker-view.client.view.html
index e95af061..d50ee191 100644
--- a/modules/about/client/views/maker-view.client.view.html
+++ b/modules/about/client/views/maker-view.client.view.html
@@ -14,7 +14,9 @@
{{'ABOUT.GROUP_FOUNDER' | translate}}{{vm.maker.user.displayName}}
{{vm.maker.members.length}}
{{vm.maker.torrent_count}}
- {{vm.maker.vote_average}}/{{vm.maker.vote_count}}{{ 'TMDB_FIELDS.VOTE_UNIT' | translate}}
+
+ {{vm.maker.vote_average}}/{{vm.maker.vote_count}}{{ 'TMDB_FIELDS.VOTE_UNIT' | translate}}
+
@@ -45,11 +47,16 @@
-
+
@@ -58,7 +65,15 @@
+
+
+
\ No newline at end of file
diff --git a/modules/about/server/controllers/makers.server.controller.js b/modules/about/server/controllers/makers.server.controller.js
index 8560f060..98db5d71 100644
--- a/modules/about/server/controllers/makers.server.controller.js
+++ b/modules/about/server/controllers/makers.server.controller.js
@@ -171,6 +171,71 @@ exports.rating = function (req, res) {
}
};
+/**
+ * addMember
+ * @param req
+ * @param res
+ */
+exports.addMember = function (req, res) {
+ var maker = req.maker;
+ var mu = req.nameuser;
+
+ var om = [];
+ maker.members.forEach(function (m) {
+ om.push(m._id.toString());
+ });
+
+ if (om.indexOf(mu._id.toString()) >= 0) {
+ return res.status(422).send({
+ message: 'username "' + mu.username + '" already exist!'
+ });
+ } else {
+ maker.members.push(mu);
+ maker.save(function (err) {
+ if (err) {
+ return res.status(422).send({
+ message: errorHandler.getErrorMessage(err)
+ });
+ } else {
+ res.json(maker);
+ }
+ });
+ }
+};
+
+/**
+ * removeMember
+ * @param req
+ * @param res
+ * @returns {*}
+ */
+exports.removeMember = function (req, res) {
+ var maker = req.maker;
+ var mu = req.nameuser;
+
+ var om = [];
+ maker.members.forEach(function (m) {
+ om.push(m._id.toString());
+ });
+
+ if (om.indexOf(mu._id.toString()) < 0) {
+ return res.status(422).send({
+ message: 'username "' + mu.username + '" not exist!'
+ });
+ } else {
+ maker.members.splice(om.indexOf(mu._id.toString()), 1);
+ maker.save(function (err) {
+ if (err) {
+ return res.status(422).send({
+ message: errorHandler.getErrorMessage(err)
+ });
+ } else {
+ res.json(maker);
+ }
+ });
+ }
+};
+
/**
* Maker middleware
*/
diff --git a/modules/about/server/policies/about.server.policy.js b/modules/about/server/policies/about.server.policy.js
index 7c03c801..7bdcd10d 100644
--- a/modules/about/server/policies/about.server.policy.js
+++ b/modules/about/server/policies/about.server.policy.js
@@ -18,7 +18,9 @@ exports.invokeRolesPolicies = function () {
{resources: '/api/makers', permissions: '*'},
{resources: '/api/makers/create/:userId', permissions: '*'},
{resources: '/api/makers/:makerId', permissions: '*'},
- {resources: '/api/makers/:makerId/rating', permissions: '*'}
+ {resources: '/api/makers/:makerId/rating', permissions: '*'},
+ {resources: '/api/makers/:makerId/addMember/:username', permissions: '*'},
+ {resources: '/api/makers/:makerId/removeMember/:username', permissions: '*'}
]
}, {
roles: ['user'],
diff --git a/modules/about/server/routes/about.server.routes.js b/modules/about/server/routes/about.server.routes.js
index e9b6f6b5..60ef3b67 100644
--- a/modules/about/server/routes/about.server.routes.js
+++ b/modules/about/server/routes/about.server.routes.js
@@ -21,5 +21,10 @@ module.exports = function (app) {
app.route('/api/makers/:makerId/rating').all(aboutPolicy.isAllowed)
.put(maker.rating);
+ app.route('/api/makers/:makerId/addMember/:username').all(aboutPolicy.isAllowed)
+ .put(maker.addMember);
+ app.route('/api/makers/:makerId/removeMember/:username').all(aboutPolicy.isAllowed)
+ .put(maker.removeMember);
+
app.param('makerId', maker.makerByID);
};
diff --git a/modules/core/client/app/trans-string-en.js b/modules/core/client/app/trans-string-en.js
index 2f5ed1bf..340b9e7b 100644
--- a/modules/core/client/app/trans-string-en.js
+++ b/modules/core/client/app/trans-string-en.js
@@ -487,10 +487,17 @@
DELETE_CONFIRM_CANCEL: 'Cancel',
DELETE_CONFIRM_HEADER_TEXT: 'Delete Confirm',
DELETE_CONFIRM_BODY_TEXT: 'Are you sure want to delete this maker group?',
+ DELETE_MEMBER_CONFIRM_BODY_TEXT: 'Are you sure want to delete the member from this group?',
DELETE_SUCCESSFULLY: 'Maker group deleted successfully',
DELETE_FAILED: 'Maker group deleted failed',
RATING_SUCCESSFULLY: 'Rating for maker group successfully',
- RATING_FAILED: 'Rating for maker group failed'
+ RATING_FAILED: 'Rating for maker group failed',
+ ADD_MEMBER_TITLE: 'Add Member',
+ ADD_MEMBER_SUCCESSFULLY: 'Add group member successfully',
+ ADD_MEMBER_FAILED: 'Add group member failed',
+ REMOVE_MEMBER_SUCCESSFULLY: 'Remove group member successfully',
+ REMOVE_MEMBER_FAILED: 'Remove group member failed',
+ REMOVE_MEMBER_TITLE: 'Remove this member'
},
//collections views
diff --git a/modules/core/client/app/trans-string-zh.js b/modules/core/client/app/trans-string-zh.js
index 9430e1c6..7b534f59 100644
--- a/modules/core/client/app/trans-string-zh.js
+++ b/modules/core/client/app/trans-string-zh.js
@@ -487,10 +487,17 @@
DELETE_CONFIRM_CANCEL: '取消',
DELETE_CONFIRM_HEADER_TEXT: '删除确认',
DELETE_CONFIRM_BODY_TEXT: '您确定要删除这个资源压制小组?',
+ DELETE_MEMBER_CONFIRM_BODY_TEXT: '您确定要从小组删除这个成员?',
DELETE_SUCCESSFULLY: '资源压制小组删除成功',
DELETE_FAILED: '资源压制小组删除失败',
RATING_SUCCESSFULLY: '为资源压制小组评分成功',
- RATING_FAILED: '为资源压制小组评分失败'
+ RATING_FAILED: '为资源压制小组评分失败',
+ ADD_MEMBER_TITLE: '添加小组成员',
+ ADD_MEMBER_SUCCESSFULLY: '添加小组成员成功',
+ ADD_MEMBER_FAILED: '添加小组成员失败',
+ REMOVE_MEMBER_SUCCESSFULLY: '删除小组成员成功',
+ REMOVE_MEMBER_FAILED: '删除小组成员失败',
+ REMOVE_MEMBER_TITLE: '删除小组成员'
},
//collections views
diff --git a/modules/forums/server/controllers/forums.admin.server.controller.js b/modules/forums/server/controllers/forums.admin.server.controller.js
index 1885854d..f7da7a8e 100644
--- a/modules/forums/server/controllers/forums.admin.server.controller.js
+++ b/modules/forums/server/controllers/forums.admin.server.controller.js
@@ -196,7 +196,7 @@ exports.userByUsername = function (req, res, next, uname) {
if (err) {
return next(err);
} else if (!user) {
- return res.status(404).send({
+ return res.status(422).send({
message: 'No user with that username has been found'
});
}