mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-19 07:37:25 +01:00
Improve group admin options
This commit is contained in:
@@ -67,6 +67,13 @@
|
||||
</span>
|
||||
</strong>
|
||||
</div>
|
||||
<div
|
||||
v-if="!userIsPartyLeader"
|
||||
class="btn btn-warning mr-2"
|
||||
@click="makePartyLeader()"
|
||||
>
|
||||
Make Party Leader
|
||||
</div>
|
||||
<div
|
||||
class="btn btn-danger"
|
||||
@click="removeFromParty()"
|
||||
@@ -288,8 +295,6 @@ function resetData (self) {
|
||||
|
||||
if (self.partyNotExistError) {
|
||||
self.errorsOrWarningsExist = true;
|
||||
} else {
|
||||
self.userIsPartyLeader = self.groupPartyData.leader === self.userId;
|
||||
}
|
||||
|
||||
// check for quest errors even if party doesn't exist (user can have old quest data)
|
||||
@@ -333,7 +338,6 @@ export default {
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
userIsPartyLeader: false,
|
||||
questStatus: '',
|
||||
questErrors: '',
|
||||
errorsOrWarningsExist: false,
|
||||
@@ -345,6 +349,11 @@ export default {
|
||||
resetData(this);
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
userIsPartyLeader () {
|
||||
return this.groupPartyData.leader === this.userId;
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
resetData(this);
|
||||
},
|
||||
@@ -356,6 +365,12 @@ export default {
|
||||
reloadData: true,
|
||||
});
|
||||
},
|
||||
async makePartyLeader () {
|
||||
await this.$store.dispatch('guilds:update', { group: {
|
||||
id: this.groupPartyData._id,
|
||||
leader: this.userId,
|
||||
} });
|
||||
}
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="form-group row">
|
||||
<label class="col-sm-3 col-form-label"><slot name="label">{{ label }}</slot></label>
|
||||
<label class="col-sm-3 col-form-label"><slot name="label">{{ label }}:</slot></label>
|
||||
<div class="col-sm-9">
|
||||
<slot>
|
||||
<textarea
|
||||
|
||||
@@ -9,6 +9,11 @@
|
||||
:label="$t('guildSummary')"
|
||||
input-type="textarea"
|
||||
/>
|
||||
<form-row
|
||||
v-model="group.chatLimitCount"
|
||||
label="Chat limit"
|
||||
input-type="number"
|
||||
/>
|
||||
<form-row
|
||||
v-model="group.description"
|
||||
:label="$t('groupDescription')"
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
<template>
|
||||
<div v-if="group.purchased.plan">
|
||||
<form-row
|
||||
label="Payment Method"
|
||||
v-model="group.purchased.plan.paymentMethod" />
|
||||
<form-row
|
||||
label="Plan ID"
|
||||
v-model="group.purchased.plan.planId" />
|
||||
<form-row
|
||||
label="Customer ID"
|
||||
v-model="group.purchased.plan.customerId" />
|
||||
<form-row
|
||||
label="Creation Date"
|
||||
v-model="group.purchased.plan.dateCreated" />
|
||||
<form-row
|
||||
label="Termination Date"
|
||||
v-model="group.purchased.plan.dateTerminated" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import formRow from '@/components/admin/formRow.vue';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
formRow,
|
||||
},
|
||||
props: {
|
||||
group: {
|
||||
type: Object,
|
||||
required: true,
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
@@ -3,18 +3,25 @@
|
||||
<h2>{{ group.name }}</h2>
|
||||
<supportContainer
|
||||
:title="$t('groupData')"
|
||||
:onSave="updateGroup"
|
||||
>
|
||||
<groupData
|
||||
:group="group"
|
||||
/>
|
||||
</supportContainer>
|
||||
<supportContainer
|
||||
:title="$t('groupPlanSubscription')"
|
||||
/>
|
||||
:title="$t('groupPlanSubscription')">
|
||||
<groupPlan
|
||||
:group="group"
|
||||
/>
|
||||
</supportContainer>
|
||||
<supportContainer
|
||||
v-if="group.type === 'party'"
|
||||
:title="$t('questDetails')"
|
||||
/>
|
||||
:title="$t('questDetails')">
|
||||
<quest
|
||||
:group="group"
|
||||
/>
|
||||
</supportContainer>
|
||||
<supportContainer
|
||||
:title="$t('members')"
|
||||
>
|
||||
@@ -30,12 +37,16 @@ import { userStateMixin } from '../../../../mixins/userState';
|
||||
import supportContainer from '../../supportContainer.vue';
|
||||
import groupData from './groupData.vue';
|
||||
import members from './members.vue';
|
||||
import groupPlan from './groupPlan.vue';
|
||||
import quest from './quest.vue';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
supportContainer,
|
||||
groupData,
|
||||
members,
|
||||
groupPlan,
|
||||
quest,
|
||||
},
|
||||
mixins: [userStateMixin],
|
||||
data () {
|
||||
@@ -59,10 +70,19 @@ export default {
|
||||
async loadGroup (groupId) {
|
||||
this.$emit('changeGroupId', groupId);
|
||||
this.group = await this.$store.dispatch('admin:getGroup', { groupId });
|
||||
|
||||
},
|
||||
async updateGroup () {
|
||||
await this.$store.dispatch('admin:updateGroup', { group: this.group });
|
||||
this.$emit('groupSaved', this.group);
|
||||
if (this.group && !this.group.id) {
|
||||
this.group.id = this.group._id || this.groupId; // Ensure group has an id property
|
||||
}
|
||||
await this.$store.dispatch('guilds:update', { group: this.group });
|
||||
this.group = await this.$store.dispatch('admin:getGroup', { groupId: this.group.id })
|
||||
await this.$store.dispatch('snackbars:add', {
|
||||
title: '',
|
||||
text: `Group updated`,
|
||||
type: 'info',
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
<template>
|
||||
<div>
|
||||
<form-row
|
||||
label="Quest Identifier"
|
||||
v-model="group.quest.key"
|
||||
/>
|
||||
<form-row
|
||||
label="Quest Leader"
|
||||
v-model="group.quest.leader"
|
||||
/>
|
||||
<form-row
|
||||
label="Is Quest Active"
|
||||
v-model="group.quest.active"
|
||||
input-type="checkbox"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import formRow from '@/components/admin/formRow.vue';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
formRow,
|
||||
},
|
||||
props: {
|
||||
group: {
|
||||
type: Object,
|
||||
required: true,
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
@@ -1330,7 +1330,7 @@ export default {
|
||||
},
|
||||
|
||||
openAdminPanel () {
|
||||
this.$router.push(`/admin-panel/${this.hero._id}`);
|
||||
this.$router.push(`/admin/panel/${this.hero._id}`);
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user