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>
|
</span>
|
||||||
</strong>
|
</strong>
|
||||||
</div>
|
</div>
|
||||||
|
<div
|
||||||
|
v-if="!userIsPartyLeader"
|
||||||
|
class="btn btn-warning mr-2"
|
||||||
|
@click="makePartyLeader()"
|
||||||
|
>
|
||||||
|
Make Party Leader
|
||||||
|
</div>
|
||||||
<div
|
<div
|
||||||
class="btn btn-danger"
|
class="btn btn-danger"
|
||||||
@click="removeFromParty()"
|
@click="removeFromParty()"
|
||||||
@@ -288,8 +295,6 @@ function resetData (self) {
|
|||||||
|
|
||||||
if (self.partyNotExistError) {
|
if (self.partyNotExistError) {
|
||||||
self.errorsOrWarningsExist = true;
|
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)
|
// check for quest errors even if party doesn't exist (user can have old quest data)
|
||||||
@@ -333,7 +338,6 @@ export default {
|
|||||||
},
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
userIsPartyLeader: false,
|
|
||||||
questStatus: '',
|
questStatus: '',
|
||||||
questErrors: '',
|
questErrors: '',
|
||||||
errorsOrWarningsExist: false,
|
errorsOrWarningsExist: false,
|
||||||
@@ -345,6 +349,11 @@ export default {
|
|||||||
resetData(this);
|
resetData(this);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
computed: {
|
||||||
|
userIsPartyLeader () {
|
||||||
|
return this.groupPartyData.leader === this.userId;
|
||||||
|
}
|
||||||
|
},
|
||||||
mounted () {
|
mounted () {
|
||||||
resetData(this);
|
resetData(this);
|
||||||
},
|
},
|
||||||
@@ -356,6 +365,12 @@ export default {
|
|||||||
reloadData: true,
|
reloadData: true,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
async makePartyLeader () {
|
||||||
|
await this.$store.dispatch('guilds:update', { group: {
|
||||||
|
id: this.groupPartyData._id,
|
||||||
|
leader: this.userId,
|
||||||
|
} });
|
||||||
|
}
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="form-group row">
|
<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">
|
<div class="col-sm-9">
|
||||||
<slot>
|
<slot>
|
||||||
<textarea
|
<textarea
|
||||||
|
|||||||
@@ -9,6 +9,11 @@
|
|||||||
:label="$t('guildSummary')"
|
:label="$t('guildSummary')"
|
||||||
input-type="textarea"
|
input-type="textarea"
|
||||||
/>
|
/>
|
||||||
|
<form-row
|
||||||
|
v-model="group.chatLimitCount"
|
||||||
|
label="Chat limit"
|
||||||
|
input-type="number"
|
||||||
|
/>
|
||||||
<form-row
|
<form-row
|
||||||
v-model="group.description"
|
v-model="group.description"
|
||||||
:label="$t('groupDescription')"
|
: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>
|
<h2>{{ group.name }}</h2>
|
||||||
<supportContainer
|
<supportContainer
|
||||||
:title="$t('groupData')"
|
:title="$t('groupData')"
|
||||||
|
:onSave="updateGroup"
|
||||||
>
|
>
|
||||||
<groupData
|
<groupData
|
||||||
:group="group"
|
:group="group"
|
||||||
/>
|
/>
|
||||||
</supportContainer>
|
</supportContainer>
|
||||||
<supportContainer
|
<supportContainer
|
||||||
:title="$t('groupPlanSubscription')"
|
:title="$t('groupPlanSubscription')">
|
||||||
/>
|
<groupPlan
|
||||||
|
:group="group"
|
||||||
|
/>
|
||||||
|
</supportContainer>
|
||||||
<supportContainer
|
<supportContainer
|
||||||
v-if="group.type === 'party'"
|
v-if="group.type === 'party'"
|
||||||
:title="$t('questDetails')"
|
:title="$t('questDetails')">
|
||||||
/>
|
<quest
|
||||||
|
:group="group"
|
||||||
|
/>
|
||||||
|
</supportContainer>
|
||||||
<supportContainer
|
<supportContainer
|
||||||
:title="$t('members')"
|
:title="$t('members')"
|
||||||
>
|
>
|
||||||
@@ -30,12 +37,16 @@ import { userStateMixin } from '../../../../mixins/userState';
|
|||||||
import supportContainer from '../../supportContainer.vue';
|
import supportContainer from '../../supportContainer.vue';
|
||||||
import groupData from './groupData.vue';
|
import groupData from './groupData.vue';
|
||||||
import members from './members.vue';
|
import members from './members.vue';
|
||||||
|
import groupPlan from './groupPlan.vue';
|
||||||
|
import quest from './quest.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
supportContainer,
|
supportContainer,
|
||||||
groupData,
|
groupData,
|
||||||
members,
|
members,
|
||||||
|
groupPlan,
|
||||||
|
quest,
|
||||||
},
|
},
|
||||||
mixins: [userStateMixin],
|
mixins: [userStateMixin],
|
||||||
data () {
|
data () {
|
||||||
@@ -59,10 +70,19 @@ export default {
|
|||||||
async loadGroup (groupId) {
|
async loadGroup (groupId) {
|
||||||
this.$emit('changeGroupId', groupId);
|
this.$emit('changeGroupId', groupId);
|
||||||
this.group = await this.$store.dispatch('admin:getGroup', { groupId });
|
this.group = await this.$store.dispatch('admin:getGroup', { groupId });
|
||||||
|
|
||||||
},
|
},
|
||||||
async updateGroup () {
|
async updateGroup () {
|
||||||
await this.$store.dispatch('admin:updateGroup', { group: this.group });
|
if (this.group && !this.group.id) {
|
||||||
this.$emit('groupSaved', this.group);
|
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 () {
|
openAdminPanel () {
|
||||||
this.$router.push(`/admin-panel/${this.hero._id}`);
|
this.$router.push(`/admin/panel/${this.hero._id}`);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user