From fd8572c28ad0c96ef719c4d206fc3d2e625d8389 Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Sat, 13 Oct 2018 13:15:46 -0500 Subject: [PATCH] Group Management Menu Fixes (#10704) * fix(groups): more intelligent member actions * fix(groups): further member action improvements * fix(groups): don't show "Remove Manager" if user doesn't have authority * fix(lint): bad if syntax * fix(groups): unnecessary if on icon --- .../client/components/groups/membersModal.vue | 28 ++++++++++++------- website/common/locales/en/groups.json | 10 ++----- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/website/client/components/groups/membersModal.vue b/website/client/components/groups/membersModal.vue index 0e5b5957cd..a2f504d2a7 100644 --- a/website/client/components/groups/membersModal.vue +++ b/website/client/components/groups/membersModal.vue @@ -33,29 +33,29 @@ div .col-1.actions b-dropdown(right=true) .svg-icon.inline.dots(slot='button-content', v-html="icons.dots") - b-dropdown-item(@click='removeMember(member, index)', v-if='isLeader') - span.dropdown-icon-item - .svg-icon.inline(v-html="icons.removeIcon", v-if='isLeader') - span.text {{$t('removeMember')}} b-dropdown-item(@click='sendMessage(member)') span.dropdown-icon-item .svg-icon.inline(v-html="icons.messageIcon") span.text {{$t('sendMessage')}} - b-dropdown-item(@click='promoteToLeader(member)', v-if='shouldShowPromoteToLeader') + b-dropdown-item(@click='promoteToLeader(member)', v-if='shouldShowLeaderFunctions(member._id)') span.dropdown-icon-item .svg-icon.inline(v-html="icons.starIcon") span.text {{$t('promoteToLeader')}} - b-dropdown-item(@click='addManager(member._id)', v-if='isLeader && groupIsSubscribed') + b-dropdown-item(@click='addManager(member._id)', v-if='shouldShowAddManager(member._id)') span.dropdown-icon-item .svg-icon.inline(v-html="icons.starIcon") span.text {{$t('addManager')}} - b-dropdown-item(@click='removeManager(member._id)', v-if='isLeader && groupIsSubscribed') + b-dropdown-item(@click='removeManager(member._id)', v-if='shouldShowRemoveManager(member._id)') span.dropdown-icon-item .svg-icon.inline(v-html="icons.removeIcon") span.text {{$t('removeManager2')}} b-dropdown-item(@click='viewProgress(member)', v-if='challengeId') span.dropdown-icon-item span.text {{ $t('viewProgress') }} + b-dropdown-item(@click='removeMember(member, index)', v-if='shouldShowLeaderFunctions(member._id)') + span.dropdown-icon-item + .svg-icon.inline(v-html="icons.removeIcon") + span.text {{$t('removeMember')}} .row(v-if='isLoadMoreAvailable') .col-12.text-center button.btn.btn-secondary(@click='loadMoreMembers()') {{ $t('loadMore') }} @@ -295,9 +295,6 @@ export default { }, computed: { ...mapState({user: 'user.data'}), - shouldShowPromoteToLeader () { - return !this.challengeId && (this.isLeader || this.isAdmin); - }, isLeader () { if (!this.group || !this.group.leader) return false; return this.user._id === this.group.leader || this.user._id === this.group.leader._id; @@ -498,6 +495,17 @@ export default { progressMemberId: member._id, }); }, + shouldShowAddManager (memberId) { + if (memberId === this.group.leader || memberId === this.group.leader._id) return false; + return !(this.group.managers && this.group.managers[memberId]); + }, + shouldShowRemoveManager (memberId) { + if (!this.isLeader && !this.isAdmin) return false; + return this.group.managers && this.group.managers[memberId]; + }, + shouldShowLeaderFunctions (memberId) { + return !this.challengeId && (this.isLeader || this.isAdmin) && this.user._id !== memberId; + }, }, }; diff --git a/website/common/locales/en/groups.json b/website/common/locales/en/groups.json index 4a7c0d5c96..81f94a8f34 100644 --- a/website/common/locales/en/groups.json +++ b/website/common/locales/en/groups.json @@ -345,15 +345,12 @@ "canceledGroupPlan": "Canceled Group Plan", "groupPlanCanceled": "Group Plan will become inactive on", "purchasedGroupPlanPlanExtraMonths": "You have <%= months %> months of extra group plan credit.", - "addManagers": "Add Managers", - "addManager": "Add Manager", - "removeManager": "Remove", + "addManager": "Assign Manager", + "removeManager2": "Unassign Manager", "userMustBeMember": "User must be a member", "userIsNotManager": "User is not manager", "canOnlyApproveTaskOnce": "This task has already been approved.", "addTaskToGroupPlan": "Create", - "leaderMarker": " - Leader", - "managerMarker": " - Manager", "joinedGuild": "Joined a Guild", "joinedGuildText": "Ventured into the social side of Habitica by joining a Guild!", "badAmountOfGemsToPurchase": "Amount must be at least 1.", @@ -404,8 +401,7 @@ "removeInvite": "Remove Invitation", "removeMember": "Remove Member", "sendMessage": "Send Message", - "removeManager2": "Remove Manager", - "promoteToLeader": "Promote to Leader", + "promoteToLeader": "Transfer Ownership", "inviteFriendsParty": "Inviting friends to your Party will grant you an exclusive
Quest Scroll to battle the Basi-List together!", "upgradeParty": "Upgrade Party", "createParty": "Create a Party",