diff options
-rw-r--r-- | client/components/sidebar/sidebar.jade | 8 | ||||
-rw-r--r-- | client/components/sidebar/sidebar.js | 28 | ||||
-rw-r--r-- | i18n/en.i18n.json | 4 | ||||
-rw-r--r-- | models/boards.js | 11 |
4 files changed, 44 insertions, 7 deletions
diff --git a/client/components/sidebar/sidebar.jade b/client/components/sidebar/sidebar.jade index 8e1fecaa..3894de5e 100644 --- a/client/components/sidebar/sidebar.jade +++ b/client/components/sidebar/sidebar.jade @@ -138,9 +138,15 @@ template(name="changePermissionsPopup") li a(class="{{#if isLastAdmin}}disabled{{else}}js-set-normal{{/if}}") | {{_ 'normal'}} - unless isAdmin + if isNormal i.fa.fa-check span.sub-name {{_ 'normal-desc'}} + li + a(class="{{#if isLastAdmin}}disabled{{else}}js-set-comment-only{{/if}}") + | {{_ 'comment-only'}} + if isCommentOnly + i.fa.fa-check + span.sub-name {{_ 'comment-only-desc'}} if isLastAdmin hr p.quiet.bottom {{_ 'last-admin-desc'}} diff --git a/client/components/sidebar/sidebar.js b/client/components/sidebar/sidebar.js index f649b4ad..043662a2 100644 --- a/client/components/sidebar/sidebar.js +++ b/client/components/sidebar/sidebar.js @@ -121,7 +121,17 @@ Template.memberPopup.helpers({ }, memberType() { const type = Users.findOne(this.userId).isBoardAdmin() ? 'admin' : 'normal'; - return TAPi18n.__(type).toLowerCase(); + if(type == 'normal'){ + const currentBoard = Boards.findOne(Session.get('currentBoard')); + const commentOnly = currentBoard.hasCommentOnly(this.userId) + if(commentOnly){ + return TAPi18n.__('comment-only').toLowerCase(); + } else { + return TAPi18n.__(type).toLowerCase(); + } + } else { + return TAPi18n.__(type).toLowerCase(); + } }, isInvited() { return Users.findOne(this.userId).isInvitedTo(Session.get('currentBoard')); @@ -308,11 +318,13 @@ BlazeComponent.extendComponent({ }).register('addMemberPopup'); Template.changePermissionsPopup.events({ - 'click .js-set-admin, click .js-set-normal'(event) { + 'click .js-set-admin, click .js-set-normal, click .js-set-comment-only'(event) { const currentBoard = Boards.findOne(Session.get('currentBoard')); const memberId = this.userId; const isAdmin = $(event.currentTarget).hasClass('js-set-admin'); - currentBoard.setMemberPermission(memberId, isAdmin); + const isCommentOnly = $(event.currentTarget).hasClass('js-set-comment-only'); + console.log(isCommentOnly) + currentBoard.setMemberPermission(memberId, isAdmin, isCommentOnly); Popup.back(1); }, }); @@ -323,6 +335,16 @@ Template.changePermissionsPopup.helpers({ return currentBoard.hasAdmin(this.userId); }, + isNormal() { + const currentBoard = Boards.findOne(Session.get('currentBoard')); + return !currentBoard.hasAdmin(this.userId) && !currentBoard.hasCommentOnly(this.userId); + }, + + isCommentOnly() { + const currentBoard = Boards.findOne(Session.get('currentBoard')); + return !currentBoard.hasAdmin(this.userId) && currentBoard.hasCommentOnly(this.userId); + }, + isLastAdmin() { const currentBoard = Boards.findOne(Session.get('currentBoard')); return currentBoard.hasAdmin(this.userId) && (currentBoard.activeAdmins() === 1); diff --git a/i18n/en.i18n.json b/i18n/en.i18n.json index 63289884..2e2f0ca1 100644 --- a/i18n/en.i18n.json +++ b/i18n/en.i18n.json @@ -137,8 +137,8 @@ "color-yellow": "yellow", "comment": "Comment", "comment-placeholder": "Write a comment", - "comment-only": "Comment", - "comment-only-desc": "Can only comment on cards on this board, nothing else.", + "comment-only": "Limited", + "comment-only-desc": "Can comment on cards only.", "computer": "Computer", "create": "Create", "createBoardPopup-title": "Create Board", diff --git a/models/boards.js b/models/boards.js index 9323d690..4492d299 100644 --- a/models/boards.js +++ b/models/boards.js @@ -107,6 +107,7 @@ Boards.attachSchema(new SimpleSchema({ userId: this.userId, isAdmin: true, isActive: true, + isCommentOnly: false, }]; } }, @@ -120,6 +121,9 @@ Boards.attachSchema(new SimpleSchema({ 'members.$.isActive': { type: Boolean, }, + 'members.$.isCommentOnly': { + type: Boolean, + }, permission: { type: String, allowedValues: ['public', 'private'], @@ -219,6 +223,10 @@ Boards.helpers({ return !!_.findWhere(this.members, {userId: memberId, isActive: true, isAdmin: true}); }, + hasCommentOnly(memberId) { + return !!_.findWhere(this.members, {userId: memberId, isActive: true, isAdmin: false, isCommentOnly: true}); + }, + absoluteUrl() { return FlowRouter.url('board', { id: this._id, slug: this.slug }); }, @@ -332,7 +340,7 @@ Boards.mutations({ }; }, - setMemberPermission(memberId, isAdmin) { + setMemberPermission(memberId, isAdmin, isCommentOnly) { const memberIndex = this.memberIndex(memberId); // do not allow change permission of self @@ -343,6 +351,7 @@ Boards.mutations({ return { $set: { [`members.${memberIndex}.isAdmin`]: isAdmin, + [`members.${memberIndex}.isCommentOnly`]: isCommentOnly, }, }; }, |