mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-19 07:37:25 +01:00
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:
committed by
Matteo Pagliazzi
parent
f161987e1e
commit
fd8572c28a
@@ -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>
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
Reference in New Issue
Block a user