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
This commit is contained in:
Sabe Jones
2018-10-13 13:15:46 -05:00
committed by Matteo Pagliazzi
parent f161987e1e
commit fd8572c28a
2 changed files with 21 additions and 17 deletions

View File

@@ -33,29 +33,29 @@ div
.col-1.actions .col-1.actions
b-dropdown(right=true) b-dropdown(right=true)
.svg-icon.inline.dots(slot='button-content', v-html="icons.dots") .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)') b-dropdown-item(@click='sendMessage(member)')
span.dropdown-icon-item span.dropdown-icon-item
.svg-icon.inline(v-html="icons.messageIcon") .svg-icon.inline(v-html="icons.messageIcon")
span.text {{$t('sendMessage')}} 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 span.dropdown-icon-item
.svg-icon.inline(v-html="icons.starIcon") .svg-icon.inline(v-html="icons.starIcon")
span.text {{$t('promoteToLeader')}} 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 span.dropdown-icon-item
.svg-icon.inline(v-html="icons.starIcon") .svg-icon.inline(v-html="icons.starIcon")
span.text {{$t('addManager')}} 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 span.dropdown-icon-item
.svg-icon.inline(v-html="icons.removeIcon") .svg-icon.inline(v-html="icons.removeIcon")
span.text {{$t('removeManager2')}} span.text {{$t('removeManager2')}}
b-dropdown-item(@click='viewProgress(member)', v-if='challengeId') b-dropdown-item(@click='viewProgress(member)', v-if='challengeId')
span.dropdown-icon-item span.dropdown-icon-item
span.text {{ $t('viewProgress') }} 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') .row(v-if='isLoadMoreAvailable')
.col-12.text-center .col-12.text-center
button.btn.btn-secondary(@click='loadMoreMembers()') {{ $t('loadMore') }} button.btn.btn-secondary(@click='loadMoreMembers()') {{ $t('loadMore') }}
@@ -295,9 +295,6 @@ export default {
}, },
computed: { computed: {
...mapState({user: 'user.data'}), ...mapState({user: 'user.data'}),
shouldShowPromoteToLeader () {
return !this.challengeId && (this.isLeader || this.isAdmin);
},
isLeader () { isLeader () {
if (!this.group || !this.group.leader) return false; if (!this.group || !this.group.leader) return false;
return this.user._id === this.group.leader || this.user._id === this.group.leader._id; return this.user._id === this.group.leader || this.user._id === this.group.leader._id;
@@ -498,6 +495,17 @@ export default {
progressMemberId: member._id, 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;
},
}, },
}; };
</script> </script>

View File

@@ -345,15 +345,12 @@
"canceledGroupPlan": "Canceled Group Plan", "canceledGroupPlan": "Canceled Group Plan",
"groupPlanCanceled": "Group Plan will become inactive on", "groupPlanCanceled": "Group Plan will become inactive on",
"purchasedGroupPlanPlanExtraMonths": "You have <%= months %> months of extra group plan credit.", "purchasedGroupPlanPlanExtraMonths": "You have <%= months %> months of extra group plan credit.",
"addManagers": "Add Managers", "addManager": "Assign Manager",
"addManager": "Add Manager", "removeManager2": "Unassign Manager",
"removeManager": "Remove",
"userMustBeMember": "User must be a member", "userMustBeMember": "User must be a member",
"userIsNotManager": "User is not manager", "userIsNotManager": "User is not manager",
"canOnlyApproveTaskOnce": "This task has already been approved.", "canOnlyApproveTaskOnce": "This task has already been approved.",
"addTaskToGroupPlan": "Create", "addTaskToGroupPlan": "Create",
"leaderMarker": " - Leader",
"managerMarker": " - Manager",
"joinedGuild": "Joined a Guild", "joinedGuild": "Joined a Guild",
"joinedGuildText": "Ventured into the social side of Habitica by joining a Guild!", "joinedGuildText": "Ventured into the social side of Habitica by joining a Guild!",
"badAmountOfGemsToPurchase": "Amount must be at least 1.", "badAmountOfGemsToPurchase": "Amount must be at least 1.",
@@ -404,8 +401,7 @@
"removeInvite": "Remove Invitation", "removeInvite": "Remove Invitation",
"removeMember": "Remove Member", "removeMember": "Remove Member",
"sendMessage": "Send Message", "sendMessage": "Send Message",
"removeManager2": "Remove Manager", "promoteToLeader": "Transfer Ownership",
"promoteToLeader": "Promote to Leader",
"inviteFriendsParty": "Inviting friends to your Party will grant you an exclusive <br/> Quest Scroll to battle the Basi-List together!", "inviteFriendsParty": "Inviting friends to your Party will grant you an exclusive <br/> Quest Scroll to battle the Basi-List together!",
"upgradeParty": "Upgrade Party", "upgradeParty": "Upgrade Party",
"createParty": "Create a Party", "createParty": "Create a Party",